如何修复此2D控制器代码,以使我的游戏对象立即以100%的速度运行?

时间:2019-07-01 23:03:53

标签: c# unity3d controller 2d

基本上,我使用虚拟操纵杆使对象整体移动,但是我无法使其立即以100%的速度移动,它只有在手柄到达操纵杆轮廓时才平滑并达到最高速度。如何删除平滑?

我尝试了一些从教程中学到的东西,例如以下代码,但由于我是初学者,所以想不出很多可以帮助您的东西。

public float runSpeed = 5f;
public Joystick joystick;
Rigidbody2D rigidbody2d;



// Start is called before the first frame update
void Start()
{
    rigidbody2d = GetComponent<Rigidbody2D>();
}

// Update is called once per frame
void Update()
{
    float horizontal = joystick.Horizontal;
    float vertical = joystick.Vertical;

    Vector2 move = new Vector2(horizontal, vertical);
    Vector2 position = rigidbody2d.position;

    if (joystick.Horizontal || joystick.Vertical >= .2f)
    {
        position = position + move * runSpeed * Time.deltaTime;
    }
    else if (joystick.Horizontal || joystick.Vertical <= -.2f)
    {
        position = position + move * -runSpeed * Time.deltaTime;
    }
    else
    {
        position = position + move * 0f * Time.deltaTime;
    }


    rigidbody2d.MovePosition(position);

错误CS0019运算符'||'不能应用于“ float”和“ bool” Assembly-CSharp类型的操作数

2 个答案:

答案 0 :(得分:1)

更改此:

if (joystick.Horizontal || joystick.Vertical >= .2f)
{
    ...
}

收件人:

if (joystick.Horizontal >= value || joystick.Vertical >= value)
{
    ...
}

答案 1 :(得分:0)

似乎您想在改变方向时消除惯性。改变方向时将速度设为零。感觉你动作很快。

但是在现实世界中,运动遵循牛顿的第一定律。因此,每次您尝试改变方向时。它受牛顿第一定律影响的最后速度的影响。所以动作会慢慢改变。