角色控制包括
移动
跳跃
下蹲
前期准备
为了使我们的角色更加符合物理规律,需要一个Rigidbody2D组件,同时移动需要一个速度,跳跃需要一个向上的力。因此定义:
private Rigidbody2D rb;
public float speed;
public float jumppower;
防止忘记将组件拖动到脚本,可以在 start函数写
rb= GetComponent<Rigidbody2D>();
移动
void movement()
{
float moveX=Input.GetAxisRaw("Horizontal");
}
其中GetAxisRaw可以用GetAxis代替,区别在于前者通过AW键获得的是-1,0,1三个值,后者获得的是-1~1之前的值。
通过改变二维坐标来改变我们角色的位置,scale的x值可以改变角色的朝向(1朝初始面,-1则相反)因此
void movement()
{
float moveX=Input.GetAxisRaw("Horizontal");
rb.velocity= new Vector2(x*speed,rb.velocity.y);
if(x!=0)
{
if (x > 0)
{
transform.localScale = new Vector3(1, 1, 1);
}
else
{
transform.localScale = new Vector3(x, 1, 1);
}
}
到这实现了角色的左右移动及其转向。
跳跃
只需要在我们按下一个键位的时候,角色会获得一个向上的力就可以解决。
Isjump = Input.GetKeyDown(KeyCode.W);
if(Isjump)
{
rb.velocity = Vector2.up * jumppower;
}
但这样会无限跳,需要添加一个检测点,只有在地面上时才可以进行跳跃,可以使用我已知的两种方法
//函数:Physics2D.OverlapCircle()
//方法:private void OnTriggerEnter2D(Collider2D collision){}
控制只能在地面上时才可以跳跃。
二段跳
下蹲