JScript -- Unity transform.eulerAngles.y 不工作

JScript -- Unity transform.eulerAngles.y not Working

所以上周我开始研究 RPG,我已经开始研究敌人的 AI,它应该旋转到它的目标,但它没有。我所做的是针对敌人我创建了一个子对象并放置了一个将其旋转到目标的脚本,然后在敌人脚本中我这样做了:

if(transform.eulerAngles.y > rotTracker.transform.eulerAngles.y) {

    transform.eulerAngles.y -= 2 * Time.deltaTime;
}
if(transform.eulerAngles.y < rotTracker.transform.eulerAngles.y) {

    transform.eulerAngles.y += 2 * Time.deltaTime;
}

rotTracker 是一个 GameObject 变量。那么,这段代码有什么问题呢?旋转跟踪器改变旋转但不改变敌人。也许是因为它有看起来不同的子对象?我创建了一个 sprite 并将它放在敌人的顶部,它代表敌人的健康并且总是转向相机。

您不应该使用 transform.eulerAngles 来增加,只能使用固定值。另外,最好设置成矢量,而不是单轴。

如果您将脚本放在子对象上并且实际上想旋转父对象,那么您的变换是错误的,但我看不清楚。

进一步我建议做这样的事情:

var dir = transform.postion - target.position;
dir.y = 0;    // set the axis you want to rotate around to 0
var targetRotation = Quaternion.LookRotation(dir);
transform.rotation = Quaternion.Lerp(transform.rotation, targetRotation, Time.deltaTime * speed);

speed 是决定旋转速度的一个因素。 (我认为代码应该是正确的,不过我使用的是 C#。)

不能直接改变角度。您需要更改矢量位置。例如:

var yRotation -= 2 * Time.deltaTime;    
transform.eulerAngles = new Vector3(0, yRotation, 0);

希望对您有所帮助!