using UnityEngine;
using System.Collections;
public class PlayerAttack : MonoBehaviour {
public GameObject target;
public float attackTimer;
public float coolDown;
// Use this for initialization
void Start () {
attackTimer = 0;
coolDown = 2.0f;
}
// Update is called once per frame
void Update () {
// Edge check
if (attackTimer > 0)
attackTimer -= Time.deltaTime;
if (attackTimer < 0)
attackTimer = 0;
if (Input.GetKeyUp(KeyCode.F)) {
// Limit the rate of attack
if (attackTimer == 0) {
Attack();
attackTimer = coolDown;
}
}
}
private void Attack () {
// If two objects is the same direction and close enough, then enable damage.
float distance = Vector3.Distance(target.transform.position, transform.position);
Vector3 dir = (target.transform.position - transform.position).normalized;
float direction = Vector3.Dot(dir, transform.forward);
if (distance < 2.5f) {
if (direction > 0) {
EnemyHealth eh = (EnemyHealth)target.GetComponent("EnemyHealth");
eh.AddjustCurrentHealth(-10);
}
}
}
}
PlayerAttack
最新推荐文章于 2024-11-11 23:29:29 发布
本文介绍了一个Unity游戏中的玩家攻击机制实现方法。通过控制攻击冷却时间并利用输入按键触发攻击动作,确保了攻击频率的合理性。文章详细展示了如何通过计算目标与玩家之间的距离和方向来判断是否造成伤害。
2207

被折叠的 条评论
为什么被折叠?



