unity3d Unity 2D角色控制器上的水平移动力无法正常工作

mrzz3bfm  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(187)

C# Character Controller
我是第一次使用unity,我对施加到精灵上的力有困难。jump vector 2变量是好的,但是我对水平移动有问题。代码没有检测到键是否被按下,如果你不断地点击键,它只会向两边施加力,然后它会向一个方向移动。
我不确定是否我不能使用刚体水平运动或向量没有写正确。如果你能回答可能的问题和/或解决方案,这将是有帮助的,谢谢。

public float JumpForce;

public float HorizontalForce;

bool  isGrounded = false;

Rigidbody2D RB;

void Start()
{
    RB = GetComponent<Rigidbody2D>();
}

void Update()
{
    if(Input.GetKeyDown(KeyCode.Space))
    { 
        if(isGrounded == true)
        {
            RB.AddForce(Vector2.up * JumpForce);
            isGrounded = false;
        }
                
    }
    if (Input.GetKeyDown(KeyCode.A))
    {
        RB.AddForce(Vector2.left * HorizontalForce);
    }
    if (Input.GetKeyDown(KeyCode.D))
    {
        RB.AddForce(Vector2.right * HorizontalForce);
    }

}
private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.CompareTag("ground")) ;
    {
        if(isGrounded == false)
        {
            isGrounded = true;
        }
    }
}

}

a11xaf1n

a11xaf1n1#

您需要GetButton()而不是GetButtonDown()
GetButtonDown仅对按下按钮的单个帧为true。只要按住按钮,GetButton就返回true

相关问题