我正在使用C#在Unity 5中为学校构建2D平台游戏。有时,当我的角色跳跃时,跳跃的速度非常高。任何规律性或任何特定的位置都不会发生这种情况。起初我使用的是AddForce然后我试着改变刚体2D上的Y速度,但它并没有解决问题。我将跳转代码从Update移动到了FixedUpdate,但这只会使跳转响应变慢。我正在使用GetKeyDown,以便在密钥关闭的整个时间内不会施加力。我已经使用了Debug.Log并运行了几个测试,以确保每次按键时跳转代码不会执行多次。我读到它可能与如何检测地面有关,但我可以在跳转代码中的几个地方设置接地为假,但它仍然无济于事。我已经将用于检测地面的代码从FixedUpdate移动到Update更新到LateUpdate,但无济于事。下面是我的跳转代码和我用来检测地面的代码。
in LateUpdate() grounded = Physics2D.OverlapCircle(GroundCheck.position, groundRadius, whatIsGround); //Use proper variables to check for ground and set grounded bool accordingly
in Update()//JUMPING-----------------------------------------------------------------------
if (grounded && //If the player is on the ground,
Input.GetKeyDown(KeyCode.Space) && //and the jump button is pressed,
RanaAnim.GetBool("Blocking") == false && //and Rana is not blocking,
!attacking) //or performing an attack
//&& GameManager.InputAllowed) //and the game is not paused...
{
if (GameManager.characterSwitch) //If Rana is the active character...
{
gameObject.GetComponent<AudioSource>().clip = RanaJump; //Prime Rana's jump audio clip
gameObject.GetComponent<AudioSource>().Play(); //Play Rana's jump audio clip
}
else //If Haroun is the active character...
{
gameObject.GetComponent<AudioSource>().clip = HarounJump; //Prime Haroun's jump audio clip
gameObject.GetComponent<AudioSource>().Play(); //Play Haroun's jump audio clip
}
HarounAnim.SetBool("Ground", false); //Communicate jumping to Haroun's Animator
RanaAnim.SetBool("Ground", false); //Communicate jumping to Rana's Animator
GetComponent<Rigidbody2D>().velocity = new Vector2(GetComponent<Rigidbody2D>().velocity.x, 0); //Zero out vertical velocity
GetComponent<Rigidbody2D>().AddForce(new Vector2(0f, jumpForce)); //Assign jump strength via AddForce on Y axis (Jumpforce Settings: Haroun|1670 Rana|4000)
//GetComponent<Rigidbody2D>().velocity = new Vector2(GetComponent<Rigidbody2D>().velocity.x, jumpForce); //Jump Strength via velocity on Y axis (Jumpforce Settings: Haroun|25 Rana|75)
}
关于此的更多背景:玩家有两个可以随时互换的可玩角色。一个名为Haroun,另一个名为Rana,因此是多个字符引用。 Haroun和Rana是他们自己的独立对象,拥有自己的精灵渲染器和碰撞器,它们用布尔值关闭和打开。 Rana和Haroun对象都是此脚本附加到的Character对象的子对象。