UDK: การตรวจสอบประเภทนักแสดงใน ProcessTouch


10

ดังนั้นโดยสังเขปฉันพยายามส่งผ่านทางไกลเมื่อมันโดนกระสุนปืน (หรือถูกทำลายด้วยอาวุธใด ๆ ในเกมของฉัน)

ตอนนี้ฉันพยายามโทรหา Pawn.SetLocation ใน ProcessTouch ของ projectile นั่นเป็นปัญหาเพราะ ProcessTouch จะโจมตีนักแสดงทุกคนไม่ใช่แค่ตัวจำนำ นอกจากนี้ความพยายามใด ๆ ในการตรวจสอบ "Actor Other" ของ ProcessTouch จะพ่นข้อผิดพลาด

ฉันได้ลองใช้วิธีแก้ไขปัญหามากมาย (รวมถึงการสร้างเหตุการณ์ TakeDamage ในคลาสตัวควบคุม Pawn) แต่ก็ไม่มีประโยชน์

    simulated function ProcessTouch(Actor Other, Vector HitLocation, Vector HitNormal)
    {
         if (Other != Instigator)
         {
              //This is where the Other.TakeDamage goes if we are using a traditional gun.
              if (Other == Pawn);
              {
                   Other.SetLocation(0,0,0);
              }
         }
    Destroy;
    }

รหัสนี้บ่นว่าจำนำเป็นนิพจน์ที่ไม่ดี ฉันจะตรวจสอบประเภทนักแสดงที่นี่ได้อย่างไร

คำตอบ:


0

ฉันคิดว่าคุณพลาดที่จะจำนำของคุณเป็น:

if( myDesiredClass(Other) != none)

ตรวจสอบและให้ข้อเสนอแนะถ้าคุณประสบปัญหาใหม่ ๆ


0

ในความคิดของฉันคุณสามารถทำได้โดยการตรวจสอบชั้นเรียน

Other.class == class'Pawn '

หรือโดยการส่งและตรวจสอบว่ามันเป็นไม่มีหรือไม่

จำนำ (อื่น ๆ )! = ไม่มี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.