unity中2d的角色控制
  eYubiZOQ5Qbj 2023年11月02日 54 0

角色控制包括

移动

跳跃

下蹲

前期准备

为了使我们的角色更加符合物理规律,需要一个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){}

控制只能在地面上时才可以跳跃。

二段跳

下蹲

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论