单点触摸即可跳到固定高度:Unity 2D

时间:2019-01-08 15:04:15

标签: unity3d

我正在尝试复制堆栈跳跃游戏进行学习。我试图使我的播放器跳到固定高度,但是使用下面的代码,它总是跳到不同的高度。如果我触摸很长时间,它会跳得很高;如果我触摸并立即释放,则它会跳得很低。我希望我的播放器在持续触摸或短暂触摸时都跳恒定高度。我刚刚开始学习团结。请帮忙!

这是我的代码-

 Touch touch;
 if (Input.touchCount > 0)
 {
     touch = Input.GetTouch(0);
     if ((touch.phase == TouchPhase.Began) && isGrounded)
     {
          //rb.velocity = Vector2.up * jumpForce;
         rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
         isGrounded = false;
     }
     if (touch.phase == TouchPhase.Ended)
     {
         //rb.velocity = Vector2.down * jumpForce;
         rb.AddForce(Vector2.down * jumpForce, ForceMode2D.Impulse);
         isGrounded = true;
     }
   }

1 个答案:

答案 0 :(得分:1)

学习Unity时,我完成了完全相同的任务。因此,您要做的就是向游戏对象中添加组件Rigitbody2D

private Rigidbody2D body;
private float jumpForce = 12.0f;


void Start()
{
   body = GetComponent<Rigidbody2D>();

}

void Update()
{
   bool grounded = false;
   // set to true when your gameObject is on the ground
   // Assume Space button is for jump
   if(grounded && Input.GetKeyDown(KeyCode.Space))
   {
       body.AddForce(Vector2.up*jumpForce, ForceMode2D.Impulse);
   } 
}

因此,您的想法是,当您在地面上时可以跳跃(可以使用Physics2D.OverlapArea来检测与地面的碰撞),可以控制要跳跃的高度,然后使用AddForce进行跳跃。