【发布时间】:2017-03-12 17:14:45
【问题描述】:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyAttack : MonoBehaviour {
public float timeBetweenAttacks = 0.5f;
public int attackDamage = 10;
Animator anim;
GameObject Player;
PlayerHealth playerHealth;
//EnemyHeath enemyhealth;
bool playerInRange;
float timer;
private Animator animator = null;
void Awake() {
Player = GameObject.FindGameObjectWithTag ("Player");
playerHealth = Player.GetComponent<PlayerHealth> ();
//enemyHealth = GetComponent<EnemyHealth> ();
anim = GetComponent <Animator> ();
}
void Attack(Collider other) {
if (other.gameObject == Player) {
playerInRange = true;
animator.SetBool ("idle0ToAttack1", true);
}
}
void Attack1(Collider other) {
if (other.gameObject == Player) {
playerInRange = false;
}
}
void Update() {
timer +=Time.deltaTime;
if (timer >= timeBetweenAttacks /*&& enemyHealth.currentHealth > 0*/) {
AttackPlayer ();
}
if (playerHealth.currentHealth <= 0) {
Destroy (this.Player);
}
}
void AttackPlayer() {
timer = 0f;
if (PlayerHealth.currentHealth > 0) {
playerHealth.TakeDamage (attackDamage);
}
}
}
错误在于最后一个方法void AttackPlayer() if(PlayerHealth.currentHealth > 0)。
我正在 Unity 中制作第一人称射击游戏,如果可能,请告诉我一些关于我上面编写的玩家死亡动画师代码的更多建议。
【问题讨论】:
-
PlayerHealth是一个类。您不能在类上调用实例方法。您需要在类(对象)的实例中调用它。否则,您希望PlayerHealth.currentHealth指的是什么?哪个球员的健康状况?
标签: c# object unity3d reference