我使用以下脚本来控制球,但它并没有完全符合我的要求。 我们的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);
}
答案 0 :(得分:2)
对于您的倾斜问题,您可能只需要选择(-Input.acceleration.x, 0.0f, -Input.acceleration.z);
以外的其他内容in the example in the documentation (-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
设置的任何值。