unity2D 人物移动和跳跃

基础的unity2D游戏角色创建:

最初始的是动画设置。

其次就是脚本创建:

1、playermovement(script)

首先我们要知道的几点是:创建2D角色我们要有一个与地面的接触点,来判断是否与地面接触,这样我们就分为两种情况:1、与地面接触接触的情况.2、不与地面接触的情况:

        公共属性和私有属性前期准备:

    private Rigidbody2D mybody;
    public float speed=5f;//角色移动的速度
    Animator anim;//创建声明游戏角色

    public Transform groundeCheckPosition;//获取物体三位
    public  LayerMask goundeplayer;
    private bool isGrounded;//检查是否与地面发生碰撞
    public float jumpPower=5f;
    private bool jumped;

检测点的创建:通过创建空对象在脚底下创建检测点

 

在update函数中添加代码(update函数:每帧检测)

void update()
{
    CheckIfgrounded();
    PlayerJump();
}

checkIfGrounded()函数的实现:

起始位置groundedcheckposition向下发射射线,距离为0.1,检测图层为groundeplayer,如果是gourndeplayer图层则返回bool值true。

判断是在地面上,如果在,再判断是否是跳跃状态,如果是则不能再次跳跃,然后设置jump动画的bool值为false

private void CheckIfGrounded(){

IsGournded=Physics2D.Raycast(GroundeCheckPostion,vector.down,0.1f,gourdeplayer);

 if (isGrounded) {
            if (jumped) {
                jumped = false;
                anim.SetBool("jump", false);
            
            }

        
        }

}

角色移动函数:

FIxedupdate函数每帧都别调用,与update的区别在于Fixupdate是真实的物理时间真,而update是游戏时间帧,因此一般使用FixUpdate处理有物理刚体的物体Rigboy

  private void FixedUpdate()
    {
         playerWalk();
    }

 unity2D游戏通过键盘的上下左右键来控制物体移动

InPut.GetAxisRaw的参数有两个:

1、horizontal水平:左键为-1,右键为1

2、Vertical 垂直:上建为1,下键为-1

private void playerWalk()
    {
        
        //精灵左右移动的速率
        float h = Input.GetAxisRaw("Horizontal");
        if (h > 0)
        {
            mybody.velocity = new Vector2(speed, mybody.velocity.y);
            changeDirection(1);//改变精灵的朝向
        }

角色跳跃:

private void playerJump()//跳跃
    {
        if (isGrounded) { //检查是否与地面发生接触
            if (Input.GetKey(KeyCode.Space)||(Input.GetKey(KeyCode.Space)&&(Input.GetKey(KeyCode.LeftArrow)||Input.GetKey(KeyCode.RightArrow)))) {
                jumped = true;
                mybody.velocity = new Vector2(mybody.velocity.x, jumpPower);
                anim.SetBool("jump", true);
            }
           
            
        }
    }

精灵朝向的翻转:

主要改变的是精灵的locascale:

  private void changeDirection(int v)
    {
        Vector3 s = transform.localScale;
        s.x = v;
        transform.localScale = s;
    }

补充代码:

    private void Awake()//激活
    {
        mybody = GetComponent<Rigidbody2D>();//给mybody一个赋值

        anim = GetComponent<Animator>();
    }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值