使用主摄像机和transform.LookAt对准目标,但不旋转摄像机。

3

我正在使用Unity3d开发一款跑酷游戏。现在,当我让角色向上跳(在y方向上移动),相机会旋转,因为我正在使用

transform.LookAt(character) 

1. 当角色正常奔跑时的第一张图片

2. 当角色跳跃时的第二张图片

正常动作图片 角色跳跃图片

我希望摄像机注视角色而不旋转。


你的意思是当角色跳跃时,相机向上移动,还是说你只是希望它在他跳跃时不旋转? - Steven Mills
我希望它在跳跃时不要旋转,应该像第一张图片中的那样。 - hariszaman
1个回答

2
有几种解决方法。由于您直接通过 transform.LookAt() 操作了视线方向,因此可以简单地更改目标。 LookAt 方法有一个重载,可以让您指定目标的位置(使用 Vector3 而不是 Transform)。
然后,您可以忽略目标的 y 坐标并选择一个固定的 y 值:
Vector3 lookAtPosition = character.transform.position;
lookAtPosition.y = fixedYPosition;
transform.LookAt(lookAtPosition);

请注意,上述解决方案仅适用于字符始终保持在同一平面上的情况(例如没有地板、楼梯等)。

谢谢,我尝试过了,但它不能阻止相机在角色跳跃时旋转。请注意,在上面的两张图片中,相机的高度保持不变,只是在角色跳跃时旋转以注视角色。 - hariszaman
目标的y值发生了变化,在上面的代码中是lookAtPosition.y。如果你用一个固定的Y位置替换它,那么它应该可以工作。 - Heisenbug
谢谢!它有效。除此之外,您可以指导我(或给我提示)如何修改脚本,如果我的路径更改为高度较低的路径?非常感谢您的任何帮助。 - hariszaman
这取决于您想要实现的效果。如果将y锁定为固定值,则问题是:您希望何时更改y?它应该如何变化? - Heisenbug
让我们在聊天中继续这个讨论:http://chat.stackoverflow.com/rooms/28308/discussion-between-hariszaman-and-heisenbug - hariszaman
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接