在Unity3D中通过倾斜装置控制球运动

问题描述 投票:0回答:1

我正在使用以下脚本来控制球,但它并没有完全达到我想要的效果。 我们的 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);         
}
c# unity-game-engine
1个回答
2
投票

对于倾斜问题,您可能只需要选择

(-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
设置的任何值。

© www.soinside.com 2019 - 2024. All rights reserved.