如何自动将炮塔连续旋转到敌人的方向
本文关键字:敌人 方向 旋转 连续 何自动 炮塔 | 更新日期: 2023-09-27 18:33:35
我有一个炮塔作为游戏对象放置,我在检查器中将目标设置为敌人,但不知何故,炮塔只是指向我的敌人,但没有在z轴上连续旋转。
这是我的代码
using UnityEngine;
using System.Collections;
public class TurretScript: MonoBehaviour
{
public Transform target;
void Update()
{
Vector3 tarPos = new Vector3(target.position.x, target.position.y, 10);
Vector3 lookPos = Camera.main.ScreenToWorldPoint(tarPos);
lookPos = lookPos - transform.position;
float angle = Mathf.Atan2(lookPos.y, lookPos.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);
}
}
实现此目的的最简单方法?欺骗! 像这样:
public class TurretScript: MonoBehaviour
{
//values that will be set in the Inspector
public Transform Target;
public float RotationSpeed;
void Update()
{
var direction = Target.transform.position - transform.position;
// Set Y the same to make the rotations turret-like:
direction.y = transform.position.y;
var rot = Quaternion.LookRotation(direction, Vector3.up);
transform.rotation = Quaternion.RotateTowards(
transform.rotation,
rot,
RotationSpeed * Time.deltaTime);
}
}
您也可以使用文档中的 Transform.LookAt()
我发现这是最简单的方法,无需计算旋转的麻烦。