所以,我正在做Unity项目。我有一个迫击炮,它倾向于玩家游戏对象。我想旋转它,让它跟随玩家的移动。我在我的Update方法中想出了这个简单的代码:
Vector3 directionToFace = _player.position - transform.position;
directionToFace.y = 0;
Debug.DrawRay(transform.position, directionToFace, Color.green); // for visualization
transform.rotation = Quaternion.LookRotation(directionToFace);
但是将y设置为0,x轴的旋转上限为0,但我希望我的砂浆向前倾斜一点。我尝试将y设置为许多不同的值,但两个对象之间的距离决定了迫击炮的倾斜度。是的,我知道我可以让它成为一个空游戏对象的子对象,并将脚本应用于父对象,但如果有任何其他方法可以在我的代码中解决这个问题……您的帮助我们将不胜感激。
我唯一的想法是计算两个游戏对象之间的距离,并相应地更改directionToFace.y的值。但我必须在检查器中获得分配给灰浆的局部旋转,然后使用毕达哥拉斯定理计算该值。但我不想那么折磨自己:D
发布于 2020-04-15 12:14:09
希望我能理解你的问题!我发现可以通过在代码后面添加下面这一行来使gameObject向前倾斜
transform.rotation = Quaternion.Euler(xOffset,transform.rotation.eulerAngles.y, transform.rotation.eulerAngles.z);
其中xOffset是您希望游戏对象倾斜的量,也可以以类似的方式为z添加显式值。
如果这不是你的意思,请告诉我。
https://stackoverflow.com/questions/61218336
复制相似问题