ที่...
Transcript of ที่...
บทท 4 อลกอรทมและผงงาน
เกมไตเชอกผจญภย ประกอบดวยคลาสทงหมด 8 คลาสแสดงดงในตารางตอไปน
ตารางท 3 รายชอคลาสในเกมไตเชอกผจญภย
ท คลาส
ความหมาย
1 2 3 4 5 6 7 8
Barrier Items Button FallOutPoint FinishPoint Character Lives Time
อปสรรค ไอเทม ปม จดตกจากเชอก จดผานดาน ตวละคร ชวต เวลา
แตละคลาสมรายละเอยดดงตอไปน
คลาส Barrier
เมธอดของคลาส Barrier
เมธอดนจะถกท างานเมอผเลนไดเรมเลนเกม โดยมเมธอดเพยงเมธอดเดยว ชอ
Update ท าหนาท เคลอนทวตถ 1 นาท
24
คลาส Items เมธอดของคลาส Items
เมธอดนจะถกท างานเมอผเลนไดเรมเลนเกม โดยมเมธอดเพยงเมธอดเดยว ชอ
Update ท าหนาท เคลอนทวตถ 1 นาท
คลาส Button
มทงหมด 4 ปม คอ
1. ปมบงคบซาย
2. ปมบงคบขวา
3. ปมหยดเกมชวคราว
4. ปมยกเลกหยดเกมชวคราว
โดยแตละปมมรายละเอยดดงตอไปน
1. ปมบงคบซาย
มเมธอดเพยงเมธอดเดยว ชอ Update ท าหนาท เปลยนสถานะการเอยงซายของตว
ละครของคลาส Character ใหเปน true
โดยเมธอด Update มอลกอรทมดงตอไปน
อลกอรทม ตรวจสอบวากดปมบงคบซาย - ถาใช ใหตวแปร cleft ของคลาส Character เปน true
25
ภาพท 27 แสดงผงงานเมธอด Update ของปมบงคบซาย
2. ปมบงคบขวา
มเมธอดเพยงเมธอดเดยว ชอ Update ท าหนาท เปลยนสถานะการเอยงขวาของตว
ละครของคลาส Character ใหเปน true
โดยเมธอด Update มอลกอรทมดงตอไปน
อลกอรทม ตรวจสอบวากดปมบงคบขวา - ถาใช ใหตวแปร cright ของคลาส Character เปน true
Update
CharacterControl1.cleftt=true
guiTexture.HitTest (touch.position)
End
N
Y
26
ภาพท 28 แสดงผงงานเมธอด Update ของปมบงคบขวา
3. ปมหยดเกมชวคราว
ประกอบดวยแอตทรบวตเพยงแอตทรบวตเดยว คอ show ส าหรบเกบขอมล
สถานะปมหยดเกมชวคราวและมเมธอดเพยงเมธอดเดยว คอ Update ท าหนาท หยดเกมชวคราว
และเปลยนสถานะการแสดงปมยกเลกหยดเกมชวคราว มอลกอรทมดงตอไปน
อลกอรทม 1. ตรวจสอบกดปมหยดเกมชวคราว - ถาใช ให 1) หยดเกมชวคราว 2) ใหสถานะของปมยกเลกหยดเกมชวคราวมคาเปน 1
3) ซอนปมหยดเกมชวคราว
Update
CharacterControl1.cright=true
guiTexture.HitTest (touch.position)
End
N
Y
27
2. ตรวจสอบสถานะปมหยดเกมชวคราวมคาเปน 1 หรอไม
- ถาใช ให
1) แสดงปมหยดเกมชวคราว
2) เปลยนสถานะปมหยดเกมชวคราวมคาเปน 0
ภาพท 29 แสดงผงงานเมธอด Update ของปมหยดเกมชวคราว
Update
guiTexture.HitTest (touch.position)
End
N
Y
ButtonResume.show=1
gameObject.guiTexture.enabled=false
gameObject.guiTexture.enabled=true
show=1 N
show=0
Time.timeScale = 0f
Y
28
4. ปมยกเลกหยดเกมชวคราว
ประกอบดวยแอตทรบวต และเมธอดดงตารางตอไปน
มแอตทรบวตเพยงแอตทรบวตเดยว ชอ show ท าหนาทเปนสถานะปม
ยกเลกหยดเกมชวคราว
ตารางท 5 แสดงเมธอดของปมยกเลกหยดเกมชวคราว
เมธอด หนาท Start ซอนปมยกเลกหยดเกมชวคราวโดยการเปลยนคาเปน false Update ตรวจสอบการกดและสถานะปมยกเลกหยดเกมชวคราว
โดยเมธอด Update มอลกอรทมดงตอไปน เมธอด Update อลกอรทม 1. ตรวจสอบสถานะการกดปมยกเลกหยดเกมชวคราว - ถาใช ให 1) ยกเลกการหยดเกมชวคราว 2) เปลยนสถานะของปมหยดเกมชวคราวมคาเปน 1 3) ซอนปมยกเลกหยดเกมชวคราว 2. ตรวจสอบสถานะปมยกเลกหยดเกมชวคราวมคาเปน 1 หรอไม - ถาใช ให 1) แสดงปมยกเลกหยดเกมชวคราว 2) เปลยนสถานะปมยกเลกหยดเกมชวคราวมคาเปน 0
29
ภาพท 30 แสดงผงงานเมธอด Update ของปมยกเลกหยดเกมชวคราว
Update
Time.timeScale = 1f
guiTexture.HitTest (touch.position)
End
N
Y
ButtonPause.show=1
gameObject.guiTexture.enabled=false
gameObject.guiTexture.enabled=true
Show=1
Y
show=0
N
30
คลาส FallOutPoint เมธอดของคลาส FallOutPoint เมธอดนจะถกท างานเมอตวละครหลนจากเชอก โดยมเมธอดเพยงเมธอดเดยว ชอ
OnCollisionEnter ท าหนาท ลดคาจ านวนชวตและเปลยน Scene
โดยเมธอด OnCollisionEnter มอลกอรทมดงตอไปน อลกอรทม
1. ลดพลงชวตลง 1
2. โหลดหนาจอเรมเลนเกมใหม
ภาพท 31 แสดงผงงานของเมธอด OnCollisionEnter คลาส FallOutPoint
End
OnCollisionEnter
HealthControl.LIVES =LIVES - 1
Application.LoadLevel(SceneRetry)
31
คลาส FinishPoint
เมธอดของคลาส FinnishPoint เมธอดนจะถกท างานเมอผเลนบงคบตวละครไตเชอกไปจนถงปลายทาง โดยม
เมธอดเพยงเมธอดเดยว ชอ OnCollisionEnter ท าหนาท เปลยน Scene ดานถดไป พรอมทง
ก าหนดใหความเรวในการไตเชอกเปนปกตและพลงชวตมคาเปน 3
โดยเมธอด OnCollisionEnter มอลกอรทมดงตอไปน ตวแปร LevelToLoad แทน ชอ Scene ของดานถดไป อลกอรทม 1. จ านวนชวต =3 2. ใหความเรวในการไตเชอก = 5 3. โหลด Scene ดานถดไป
ภาพท 32 แสดงผงงานของเมธอด OnCollisionEnter คลาส FinishPoint
End
OnTriggerEnter
HealthControls.LIVES=3
CharacterControl1.speed=5
Application.LoadLevel(levelToLoad)
32
คลาส Character คลาส Character ประกอบดวยแอตทรบวต และเมธอดดงตารางตอไปน ตารางท 6 แสดงแอตทรบวตของคลาส Charactor แอตทรบวต ชนด ความหมาย speed int ความเรวในการเคลอนท cleft boolean สถานะการเอยงซาย cright boolean สถานะการเอยงขวา mySound AudioClip[] เสยง starss ParticleEmitter เอฟเฟค
ตารางท 7 แสดงเมธอดของคลาส Character
เมธอด หนาท Update เคลอนทตวละคร OntriggerEnter ตรวจสอบการชน
โดยเมธอด Update และ OntriggerEnter มอลกอรทมดงตอไปน
33
เมธอด : Update อลกอรทม
1. ตวละครเคลอนทไปขางหนา 2. ตรวจสอบตวละครวามสถานะเปนการเอยงซายหรอไม - ถาใช ให 1) ตวละครเอยงซาย 2) เปลยนสถานะการเอยงซายเปน False - ถาไมใช ให
ตรวจสอบตวละครวามสถานะเปนการเอยงขวาหรอไม - ถาใช ให 1) ใหตวละครเอยงขวา 2) เปลยนสถานะการเอยงขวาเปน False
34
ภาพท 33 แสดงผงงานของเมธอด Update ของคลาส Character
Update
transform.Translate (Vector3(0,0,-1.3) * Time.deltaTime*speed)
cleft=true
cright=true
transform.Rotate (Vector3(0,0,-1) *
Time.deltaTime*100)
cleft=false
transform.Rotate (Vector3(0,0,1) *
Time.deltaTime*100)
cright=false
End
N
N
Y
Y
35
เมธอด : OntriggerEnter อลกอรทม 1. ท าลายวตถ 2. ตรวจสอบชอประเภท ถาเปน
- “B1” ให a. ตวละครถอยหลงนอย b. เลนเสยงของประเภท B1 c. เลนเอฟเฟค -“ B2” ให a. ตวละครถอยหลงปานกลาง b. เลนเสยงของประเภท B2 c. เลนเอฟเฟค -“ B3” ให a. ตวละครถอยไปหลงมาก b. เลนเสยงของประเภท B3 c. เลนเอฟเฟค -“B4” ให - ถาจ านวนชวตนอยกวา 3 ให จ านวนชวต+1 1) เลนเสยงของประเภท B4 2) เลนเอฟเฟค -“B5” ให a. ความเรวในการทรงตวเพมขน b. เลนเสยงของประเภท B5 c. เลนเอฟเฟค
36
ภาพท 34 แสดงผงงานของเมธอด OntriggerEnter ของคลาส Character
OntriggerEnter
objetInfo.gameObject.tag = ?
Destroy(objetInfo.gameObject)
End
AudioSource.PlayClipAtPoint(mySound[0], transform.position)
transform.Translate (Vector3(0,0,50) * Time.deltaTime*10
)
Instantiate(starsss, transform.position, transform.rotation)
AudioSource.PlayClipAtPoint(mySound[1], transform.position)
transform.Translate (Vector3(0,0,100) * Time.deltaTime*10
)
Instantiate(starsss, transform.position, transform.rotation)
AudioSource.PlayClipAtPoint(mySound[2], transform.position)
transform.Translate (Vector3(0,0,150) * Time.deltaTime*10
)
Instantiate(starsss, transform.position, transform.rotation)
AudioSource.PlayClipAtPoint(mySound[4], transform.position)
CharacterControl1 .speed=15
Instantiate(starsss, transform.position, transform.rotation)
LIVES < 3
HealthControl.LIVES =LIVES+1
AudioSource.PlayClipAtPoint(mySound[3], transform.position)
Instantiate(starsss, transform.position, transform.rotation)
N
“B1”
“B2”
“B3”
“B4”
“B5”
37
คลาส Lives คลาส Lives ประกอบดวยแอตทรบวต และเมธอดดงตอไปน ตารางท 8 แสดงแอตทรบวตของคลาส Lives แอตทรบวต ชนด ความหมาย health1 Texture2D ภาพจ านวนชวต 1 จ านวน health2 Texture2D ภาพจ านวนชวต 2 จ านวน health3 Texture2D ภาพจ านวนชวต 3 จ านวน LIVES Int จ านวนชวตของผเลน
เมธอดของคลาส Lives
มเมธอดเพยงเมธอดเดยว ชอ Update ท าหนาท แสดงจ านวนชวตของผเลน
โดยเมธอด Update มอลกอรทมดงตอไปน
เมธอด : Update อลกอรทม ตรวจสอบจ านวนชวต ถามคาเปน - 3 ใหแสดงรป 3 จ านวนชวต - 2 ใหแสดงรป 2 จ านวนชวต - 1 ใหแสดงรป 1 จ านวนชวต - 0 ใหโหลด Scene Game Over
38
ภาพท 35 ผงงานของเมธอด Update ของคลาส Lives
End
Update
LIVES=?
health3
health2
health1
3
2
1
0
Application.LoadLevel
(SceneGameOver)
39
คลาส Time คลาส Time ประกอบดวยแอตทรบวต และเมธอดดงตอไปน ตารางท 9 แสดงแอตทรบวตของคลาส Time
แอตทรบวต ชนด ความหมาย time float เวลาทม second int เวลาทเหลอ
ตารางท 10 แสดงเมธอดของคลาส Time
เมธอด หนาท Start ก าหนดเวลาเรมเลนเปน 30 วนาท Update นบเวลาถอยหลง
โดยเมธอด Update มอลกอรทมดงตอไปน
เมธอด : Update อลกอรทม 1. นบเวลาถอยหลง 2. ค านวณ - Second = เวลาทก าหนด % 60 3. ถาเวลานอยกวาหรอเทากบ 0 - จ านวนชวตลดลง 1 - ใหโหลดหนาจอเรมเลนเกมใหม - ถาไมใช ใหแสดง Second
40
ภาพท 36 แสดงผงงานของเมธอด Update ของคลาส Time
End
Update
time<=0
time=time - Time.deltaTime
second=time mod 60
second
Y
N
Application.LoadLevel(ScencRetry)
HealthControl.LIVES=LIVES - 1