Enemy logic errors
我正在学习在Unity中制作游戏的教程,而我的JavaScript / UnityScript遇到了一个特殊的问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #pragma strict var Health = 100; function ApplyDamage (TheDamage : int) { Health -= TheDamage; if(Health <= 0) { Dead(); } } function Dead() { Destroy (gameObject); } |
那是我的敌人游戏对象脚本,但是,尽管我有一个混战系统的逻辑,您必须单击两次他并死,否则它不起作用,而且只要我的玩家角色走进敌人,它就会自动销毁 没有点击。
我也会在这里发布我的近战系统:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #pragma strict var TheDamage : int = 50; var Distance : float; var MaxDistance : float = 1.5; function Update () { if (Input.GetButtonDown("Fire1")) var hit : RaycastHit; if (Physics.Raycast (transform.position, transform.TransformDirection(Vector3.forward), hit)) { Distance = hit.distance; if (Distance < MaxDistance) ( hit.transform.SendMessage("ApplyDamage", TheDamage, SendMessageOptions. DontRequireReceiver) ); } } |
谁能帮我这个? 似乎是一个随机错误。
您的代码有问题。 您实际上并没有正确使用
1 2 3 4 5 6 7 8 9 10 11 12 13 | if (Input.GetButtonDown("Fire1")) { var hit : RaycastHit; } if (Physics.Raycast (transform.position, transform.TransformDirection(Vector3.forward), hit)) { Distance = hit.distance; if (Distance < MaxDistance) { hit.transform.SendMessage("ApplyDamage", TheDamage, SendMessageOptions. DontRequireReceiver); } } |
显然,这不是您想要的。 请记住,如果不放在方括号中,则仅在
解
1 2 3 4 5 6 7 8 9 10 11 12 | if (Input.GetButtonDown("Fire1")) { var hit : RaycastHit; if (Physics.Raycast (transform.position, transform.TransformDirection(Vector3.forward), hit)) { Distance = hit.distance; // Intentionally left the brackets out of this if to show you. if(Distance < MaxDistance) hit.transform.SendMessage("ApplyDamage", TheDamage, SendMessageOptions. DontRequireReceiver); } } |
因此,我特意在
您为近战系统发布的代码的第一个if语句缺少大括号