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;
}
}
}
}
1条答案
按热度按时间a11xaf1n1#
您需要
GetButton()
而不是GetButtonDown()
。GetButtonDown仅对按下按钮的单个帧为true。只要按住按钮,GetButton就返回true