Unity2D敌人攻击的代码
时间: 2023-07-09 15:38:57 浏览: 127
Unity 2D射击游戏源代码
以下是一个简单的Unity 2D敌人攻击的代码示例:
```c#
public class EnemyAttack : MonoBehaviour {
public float damage = 10f;
public float attackDelay = 1f;
public float attackRange = 1f;
public LayerMask attackMask;
private Animator animator;
private Transform target;
private float nextAttackTime = 0f;
void Start() {
animator = GetComponent<Animator>();
target = GameObject.FindGameObjectWithTag("Player").transform;
}
void Update() {
if (Time.time >= nextAttackTime) {
float distanceToTarget = Vector2.Distance(transform.position, target.position);
if (distanceToTarget <= attackRange) {
Attack();
nextAttackTime = Time.time + attackDelay;
}
}
}
void Attack() {
animator.SetTrigger("attack");
Collider2D[] hitTargets = Physics2D.OverlapCircleAll(transform.position, attackRange, attackMask);
foreach (Collider2D target in hitTargets) {
target.GetComponent<PlayerHealth>().TakeDamage(damage);
}
}
void OnDrawGizmosSelected() {
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(transform.position, attackRange);
}
}
```
该代码包含了以下功能:
- 敌人使用 `attackDelay` 变量来限制攻击频率。
- 敌人使用 `attackRange` 变量来限制攻击范围。
- 敌人使用 `attackMask` 变量来指定攻击时需要检测的层。
- 敌人使用 `animator` 变量来播放攻击动画。
- 敌人使用 `OnDrawGizmosSelected()` 函数来在场景视图中显示攻击范围的可视化。
- 敌人使用 `Physics2D.OverlapCircleAll()` 函数来检测攻击范围内的目标。
- 敌人使用 `TakeDamage()` 函数来对检测到的目标造成伤害。
阅读全文