基于碰撞检测显示和递减hp

时间:2016-11-14 20:41:56

标签: c# unity3d artificial-intelligence virtual-reality

所以我有敌人的游戏对象攻击一个小基地的用户。敌人有一个OnCollisionEnter方法,它会检查它与之碰撞的内容。如果它被标记为基数,则将攻击布尔值设置为true,其中fixedupdate应检查该标志。如果为true,则调用一个协程,我在其中尝试调用从墙上移除健康的方法(此脚本附加到墙上)。然后墙壁健康状况显示在我在其他地方代码下面的HUD中

问题是,敌人不能对基地造成伤害,而且HUD仍然不变。任何提示/帮助?这是敌人的行为脚本

 public class EnemyBehaviour : MonoBehaviour {
 private GameObject target;
 private Vector3 targetPos;
 private WallBehaviour wallBehaviour;
 public GameObject collisionObject;
 private bool attackMode;
 public float speed = 0.1f;
 public int hp = 100;
 public float attackCooldown = 1.0f;
 public int attackPoints = 1;
 public float killThreshhold = 1.5f;
 public Color defaultColor;
 //Use this for initialization
 void Start() {
     target = GameObject.FindGameObjectWithTag("MainCamera");
     targetPos = target.transform.position;
     attackMode = false;
 }
 void FixedUpdate() {
     targetPos = target.transform.position;
     transform.LookAt(target.transform);
     float step = speed * Time.deltaTime;
     transform.position = Vector3.MoveTowards(transform.position, targetPos, step);
     if (attackMode)
     {
         StartCoroutine("attemptAttack");
     }
     else
     {
         GetComponent<Renderer>().material.color = defaultColor;
     }
 }
 void OnCollisionEnter(Collision collision)
 {
     collisionObject = collision.gameObject;
     if (collision.gameObject.tag == "Bunker") {
         wallBehaviour = collision.gameObject.GetComponent<WallBehaviour>();
         attackMode = true;
     }
 }
 public IEnumerator Attack()
 {
     attackMode = false;
     GetComponent<Renderer>().material.color = Color.red;
     wallBehaviour.ProcessDamage(attackPoints);
     yield return new WaitForSeconds(attackCooldown);
     attackMode = true;
 }
 void ProcessDamage(int attackPoints)
 {
     hp -= attackPoints;
     if (hp <= 0)
     {
         Die();
     }
 }
 public int getHitPoints()
 {
     return hp;
 }
 public void Damage(DamageInfo info)
 {
     hp -= info.damage;
     if (hp <= 0) {
         Die();
     }
 }
 public void Die()
 {
     Destroy(gameObject);
 }

0 个答案:

没有答案