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