我知道这可能是Unity开发人员的一个基本问题。但我正在努力寻找这个问题的答案。我想根据设备加速移动游戏画面中的所有对象。我只想到两种可能的解决方案:
第一:根据设备倾斜改变整个世界的重力
第二:将力施加到所有物体或改变所有物体的速度(我尝试改变速度,但游戏滞后)
有没有什么好方法可以让2D游戏对象根据设备倾斜顺畅移动?
答案 0 :(得分:0)
您可以通过修改Physics2D.gravity
来执行此操作。它将改变场景中所有GameObject的重力。
Physics2D.gravity = Input.acceleration * 50;
会起作用,但由于Input.acceleration
具有低,中,高值,因此无效。因此,您无法直接将Input.acceleration
分配给Physics2D.gravity
。
您需要打开设备,然后使用Debug.Log(Input.acceleration)
查看每个轴的低,中,高值,然后您可以使用if
语句和临时Vector2
值来获取要分配给Physics2D.gravity
的2D值。
对于任何GameObject,您希望加速度计影响更多,更少或不是,您可以修改{{1那个GameObject。
答案 1 :(得分:0)
可以通过设置Physics2D.gravity
来更改应用于场景中所有刚体的重力。
注意:确保您还设置rigidbody.useGravity = true
(重力会影响对象)。
实施例:
Physics2D.gravity = new Vector2(x,y);
答案 2 :(得分:0)
将其放置在任何元素的update()块中。
Physics2D.gravity是一个采用Vector2作为值的“全局”值。
Debug.Log(Input.acceleration);
Physics2D.gravity = new Vector2(Input.acceleration.x*1.5f, Input.acceleration.y*1.5f);
(您可以在每个输入的加速度属性中编辑/删除乘浮点,我只是为某些指数重力速度添加了它们。) 注意: 这将影响所有的刚体。