相机应该遵循2D人物,这里是代码相机是继无法顺利
void LateUpdate()
{
var to = target.position;
to.z = transform.position.z;
var newPos = Vector3.Lerp(transform.position, to, speed * Time.deltaTime);
transform.position = newPos;
newPos.z = to.z;
Debug.DrawRay(newPos, Vector3.up, Color.green, 5);
}
我也画人物和摄像头的位置。
红线是人物的位置,和绿线是相机的位置
我该怎么办错了吗?
UPDATE:
我已经想通了一些有趣的事情。在下面的图片中,绿线是由LateUpdate方法内的Vector3.Lerp移动的相机的位置。黄线是我在固定更新方法中为角色的Rigidbody2D设置的角色的位置,红线是从相机的LateUpdate内部看到的角色转换的位置。
我想要说的是,人物的实际位置是由其Rigidbody2D组件驱动。通过更改Rigidbody2D的“插值”选项,我们可以得到不同的结果。
问题是,即使我将每个FixedUpdate滴答的相同值添加到Rigidbody2D的位置,结果也不是那么一致。有时新旧位置之间的距离比应该大。
除此之外,我们在LateUpdate方法中设置相机的位置,该方法与FixedUpdate的更新速率不同,所以即使我们将新位置设置为字符的变换而不是Rigidbody2D, camere仍然不会流畅,因为角色的速度每帧都会有所不同。
现在我只有一个解决方案。
- 的字符集的新位置及其变换,而不是在其FixedUpdate的房间的Rigidbody2D
- 改变位置,而不是在LateUpdate。
然后位置看起来会像这样
但因为相机的位置在FixedUpdate设置,也不会那么顺利,因为它可能是,也是我”我不确定这个角色的碰撞检测是否能够正常工作,因为我们将其位置直接设置为它的变换。
尝试SmoothCamera脚本,你必须做出改变为仅支持2D如下(只设置位置沿着z轴恒定)。以下是链接: [UnityWiki](http://wiki.unity3d.com/index.php?title=SmoothFollow2&oldid=13960) 或 [UnityWikiCached](http://webcache.googleusercontent.com/search?q=缓存:iYKRX3r1TwUJ:wiki.unity3d.com/index.php/SmoothFollow2+&cd=1&hl=zh-CN&ct=clnk&gl=in&client=firefox-b-ab) –
我试过简单的脚本和改进的脚本,仍然有问题,我认为问题出在别的什么地方,而不是代码 –
在设备上还是在编辑器和设备上都不平滑? 也尝试在任何脚本唤醒设置此Application'targetFrameRate = 60;' –