我正在使用以下脚本来控制球,但它并没有完全达到我想要的效果。 我们的 3D 游戏将以横向模式玩,右手是设备的主页按钮(或底部)。向左倾斜(而不是转动)设备应使球向左滚动,向右倾斜应使其向右滚动。向下倾斜设备(设备顶部下降)会使球滚动得更快,向上倾斜设备会减慢球的滚动速度。 我也不希望球无限加速。
下面的代码希望设备保持笔直而不是平放,并且它通过转动设备而不是平铺设备来移动球。
void FixedUpdate()
{
// Player movement in mobile devices
// Building of force vector
Vector3 movement = new Vector3(-Input.acceleration.x, 0.0f, -Input.acceleration.z);
// Adding force to rigidbody
var move = movement * speed * Time.deltaTime;
rigidbdy.AddForce(move);
}
对于倾斜问题,您可能只需要选择
(-Input.acceleration.x, 0.0f, -Input.acceleration.z);
以外的其他选项,在文档中的示例中,他们会 (-Input.acceleration.y, 0.0f, Input.acceleration.x);
来进行倾斜控制。
对于最大速度问题,只需在代码中添加对
rigidbdy.velocity.magnitude > maxSpeed
的检查,并在达到最大值时限制该值。
public float maxSpeed;
void FixedUpdate()
{
// Player movement in mobile devices
// Building of force vector
Vector3 movement = new Vector3(-Input.acceleration.y, 0.0f, Input.acceleration.x);
// Adding force to rigidbody
var move = movement * speed * Time.deltaTime;
rigidbdy.AddForce(move);
//Limits the max speed
if(rigidbdy.velocity.magnitude > maxSpeed)
{
rigidbdy.velocity = rigidbdy.velocity.normalized * maxSpeed;
}
}
这将导致速度被限制为您在检查器中为
maxSpeed
设置的任何值。