首页
学习
活动
专区
圈层
工具
发布

JScript
EN

Stack Overflow用户
提问于 2016-03-19 13:04:13
回答 2查看 425关注 0票数 0

因此,上周我开始制作一个RPG,我已经开始研究敌人的AI,它应该旋转到它的目标上,但它没有。我为敌人创建了一个子对象,并将一个脚本旋转到目标上,然后在敌人的脚本中这样做:

代码语言:javascript
复制
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变量。那么,这个代码有什么问题呢?旋转跟踪器改变旋转,但不改变敌人。也许是因为它的子对象看的是不同的东西?我创造了一个精灵,把它放在敌人的上面,它代表敌人的健康,总是转向镜头。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-19 13:15:47

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

代码语言:javascript
复制
var yRotation -= 2 * Time.deltaTime;    
transform.eulerAngles = new Vector3(0, yRotation, 0);

希望这能有所帮助!

票数 2
EN

Stack Overflow用户

发布于 2016-03-19 13:15:22

您不应该使用transform.eulerAngles作为增量,而只使用固定值。另外,最好将其设置为矢量,而不是单轴。

如果您已经将脚本放在子上,并且实际上想要旋转父文件,那么您就有了错误的转换,但是我不能清楚地读出来。

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

代码语言:javascript
复制
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#。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36102084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档