我希望玩家在敌人附近时受到伤害,敌人会受到伤害但是玩家没有受到伤害(我试图夺走杀死敌人的功能以检查它是否太快)。我是团结的新手,这是我的第一个“独立”脚本之一,所以这可能是一个非常明显的错误。但是没有错误或警告。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AttackableScript : MonoBehaviour {
public float health;
public float attackSpeed;
public float damage;
public float radious = 3f;
public Transform enemyArea;
bool dead = false;
public GameObject player;
public float KillCount;
public void Die()
{
Debug.Log(health);
health = health - 0.04f;
if (health == 0f)
{
dead = true;
}
}
IEnumerator Attack()
{
GameObject thePlayer = GameObject.Find("player");
PlayerMovement playerScript = thePlayer.GetComponent<PlayerMovement>();
playerScript.playerHealth = playerScript.playerHealth - damage;
yield return new WaitForSeconds(attackSpeed);
Debug.Log("player health = " + playerScript.playerHealth);
}
void Update() {
float distance = Vector3.Distance(player.transform.position, enemyArea.position);
if (distance <= radious && dead != true)
{
Attack();
}
if (health <= 0)
{
health = 0;
Destroy(gameObject);
Destroy(this);
}
}
}
游戏是2d。
答案 0 :(得分:0)
我问了一个不和谐,他们指出我滥用协同程序,当我调用攻击功能时,我忘了启动它。因此,不是Attack(),而是StartCoroutine(Attack());