Chat Room

บทที่ 4.2 Take Damage ( กระทำการโจมตี ศัตรู )

การ Take Damage หรือการกระทำ Damage ผมจะมาต่อจาก บทที่ 4.1 นะครับ


Class MyPawn

ในที่นี้ผมจะใช้ การ Touch นะครับ
เรามาเริ่มกัน เริ่มจากการเข้าไปดูที่ Properties นะครับ bBlockActors=false นะครับ
แล้วก็เอา Code ข้างล่างลองไปใส่ ดูครับ



event Touch(Actor Other, PrimitiveComponent OtherComp, Object.Vector HitLocation, Object.Vector HitNormal)
{
      Other.TakeDamage( 1, None, Other.location,vect(0,0,0),class'DeathString');
Worldinfo.game.Broadcast(self,string(MyBot(Other).health));
}

อ่ะเสร็จแล้วก็จะได้ออกมาดั่งภาพ ข้างล่างครับ


เมื่อได้ดั่งรูปนี้เรา มาทำความเข้าใจในส่วน ที่ผมได้กระทำการเขียนลงไปดีกว่า

event TakeDamage (int DamageAmountController EventInstigatorObject.Vector HitLocationObject.Vector Momentumclass<DamageTypeDamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser)


อ่ะเรามาสังเกตุ 5 Parameter แรกเป็น parameter บังคับครับ 


1 เลยคือจำนวน Damage ครับ
2 นี้ผมไม่รู้เหมือนกัน แต่ผมตั้งเป็น none เพราะไม่มีความจำเป็น 
3 โดนณจุดไหน
4 เมื่อโดนจะเคลื่อนย้ายไป vector เท่าไหร่ ลองใส่ดูครับแล้วจะรู้
http://wiki.beyondunreal.com/UE3:DamageType_(UDK) เลือกเอาครับ


6 กับ 7 เอาไว้ตรวจสอบกับ ตัวละคร ที่ก่อให้เกิด Damage ครับ

MyBot(Other).health

ผมว่าหลายคน งง ตรงนี้แน่นอน MyBot คือ Class ที่ผมระบุไว้เพื่อจะเอาไป Convert ครับ
หรือเรียกง่ายๆ Actor to Pawn ว่าซึ่งด้วยการดันแปลง ให้อยู่ในรูปแบบ Pawn ของ class MyBot ครับ เพราะว่า
Actor นั้นไม่มี Variable Health ครับจึงต้องดัดแปลงไปอยู่ในรูปแบบเป้าหมายของ Class Pawn เพื่อที่ผม
จะกำหนดเป้าหมายในการเรียกดูแบบเจาะจงก็จะใช้ Class MyBot นำเลยครับเพราะผมต้องการดู
HP ของ MyBot ครับ

ส่วน การ Bump ก็ไม่แตกต่างกันครับ เดี๋ยวเรามาต่อเรื่องต่อไปกันดีกว่าครับ

สรุป

TakeDamage คือการกระทำที่ก่อให้เกิดความเสียหายแก่ Player หรือ Bot นั่นเองโดย การให้กำเนิด
Player หรือ Bot แต่ละครั้ง ระบบจะทำการ กำหนด เลือดมาให้โดย อัตโนมัติ โดยวิธีที่จะทำให้เลือดเริ่ม
ต้นมีเยอะๆก็ ทำใน Pawn ที่เราจะให้กำเนิด ตั้งใน Properties ให้ ตั้งว่า Health = จำนวนเลือดเลยครับ
อย่างเช่น MyPawn ของผมก็คือกำหนด การ Pawn ของ Player ส่วน MyBot ก็คือการ กำหนดการ Pawn ของ Bot ครับ

ไม่มีความคิดเห็น: