我想知道如何在 C# 中设置相对于屏幕的游戏对象速度?例如,如果游戏对象从屏幕上掉下来,即使世界已经移动,它仍然会掉到屏幕上。

1 回答
2
解决方案1(简单的方法)
您可以将对象设置为相机的子对象 - 这样相机的移动将影响对象的移动,因此您应该达到您想要的效果。
解决方案 2
const float Velocity = 1.0f;
const float DistanceFromCamera = 1.0f;
Vector3 ScreenCoords = new Vector3(0.0f, 0.0f, 0.0f);
void Update()
{
ScreenCoords.x += velocity * Time.deltaTime;
Vector3 worldCoords = camera.ScreenToWorldPoint(ScreenCoords);
worldCoords.z = DistanceFromCamera;
target.position = worldCoords;
}
这将执行以下操作:
- 在变量 ScreenCoords 中保持对象相对于相机的位置
- 更新 ScreenCoords(您可以通过指定速度更新或尝试通过Rigidbody2D.velocity或Rigidbody.velocity等字段使用物理引擎
- 将屏幕坐标转换为世界坐标并更新对象位置
于 2018-08-23T21:12:36.293 回答