这两天在做一个2D横板的小游戏,不过有点打不起精神,果然还是得写博客才能又学习的动力嘛哈哈哈
请看代码咯
这里是有长跳和短跳系统
public float jumpForce; public float jumpAddForce; public float jumpTime; public float jumpStartTime; public bool isjump;//是否在跳跃 private void jump() { if (Input.GetKeyDown(KeyCode.Space))//按下按钮的时候开始检测 { isjump = true; rb2d.velocity = Vector2.up * jumpForce;//Vectors.up是一种简写形式,单看这个单词也能明白意思吧,本来我也设想过用改变坐标的形式来进行跳跃但是很违和,所以我找到了添加力的方式来进行跳跃,看起来很自然,舒服。 jumpTime = jumpStartTime; } if(Input.GetKey(KeyCode.Space)&&isjump == true)//这里是长按跳跃键时最多上升到什么时候 { if(jumpTime > 0) { rb2d.velocity = Vector2.up * jumpForce; jumpTime -= Time.deltaTime; } } else { isjump = false;//跳跃时间到,停止 } if (Input.GetKeyUp(KeyCode.Space))//放下跳跃键也停止跳跃 { isjump = false; } }
这一套模式还挺自然的,无论是跳跃还是落地都遵循物理系统,方便得很,修改坐标的模式就显得很蹩脚了,十分不推荐。
效果如下,由于跳跃时间等等都可以设置,所以还是很好用的