如何设置相对于屏幕的游戏对象速度

时间:2018-08-23 15:19:10

标签: c# unity3d screen unityscript

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

1 个答案:

答案 0 :(得分: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中保持对象相对于摄像机的位置
  • 更新屏幕坐标(您可以通过指定速度进行更新,也可以尝试通过Rigidbody2D.velocityRigidbody.velocity之类的字段来利用物理引擎
  • 将屏幕坐标转换为世界坐标并更新对象位置