基于unity引擎写子弹自动追踪敌人的代码
时间: 2024-06-10 15:03:53 浏览: 178
UNITY自动追踪导弹源码
5星 · 资源好评率100%
好的,以下是一个基于Unity引擎实现子弹自动追踪敌人的示例代码,供您参考:
```csharp
using UnityEngine;
public class BulletController : MonoBehaviour
{
[SerializeField] private GameObject target;
[SerializeField] private float speed = 5f;
private Rigidbody rb;
private void Start()
{
rb = GetComponent<Rigidbody>();
}
private void FixedUpdate()
{
if (target != null)
{
Vector3 direction = target.transform.position - transform.position;
direction.Normalize();
Vector3 rotation = Vector3.RotateTowards(transform.forward, direction, speed * Time.fixedDeltaTime, 0f);
rb.rotation = Quaternion.LookRotation(rotation);
rb.velocity = rotation * speed;
}
}
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Enemy"))
{
other.GetComponent<EnemyController>().TakeDamage(10f);
Destroy(gameObject);
}
}
}
```
此脚本需要挂载在子弹的GameObject上,并且通过target变量指定要追踪的敌人GameObject。在FixedUpdate方法中,我们首先计算追踪目标的方向,并将子弹的方向逐步朝向目标方向。我们然后将子弹的刚体速度设置为当前方向与速度之积。最后,当子弹撞击敌人时,我们会调用敌人的TakeDamage方法,并销毁子弹GameObject。
希望这样的代码可以帮到你!
阅读全文