unity2D 物体移动以及多段跳跃

针对实现在Unity中对2D物体的移动以及多端跳跃的实现

        在移动方面采用Translate()方法直接移动物体位

        在跳跃方面使用两个bool变量jumpTime和jumpTimes控制跳跃时间和跳跃次数

代码如下:

//定义物体是否在地面状态    
    private bool isGrounded;
    //定义物体脚下位置
    public Transform feetPos;
    //定义碰撞检测范围
    public float checkRadius;
    //定义地面layer
    public LayerMask whatIsGround;

    //定义跳跃力度
    public float jumpForce = 20f;
    //定义水平移动速度
    public float speed = 0.02f ;

    //定义跳跃次数
    public int jumpTimesCounter = 1;
    private int jumpTimes ;

    //定义跳跃时间
    public  float jumpTime;
    private float jumpTimeCounter;

    //定义刚体变量
    Rigidbody2D rb;

    void Start()
    {
        //设置物体的刚体组件
        rb = GetComponent<Rigidbody2D>();
    }

     void FixedUpdate()
    {
        //控制水平移动
        float moveInput = Input.GetAxis("Horizontal")*speed;
        transform.Translate(moveInput,0,0);
    }


    void Update()
    { 
        //设置与地面接触状态
        isGrounded = Physics2D.OverlapCircle(feetPos.position,checkRadius,whatIsGround);

        // 处于地面状态时重置跳跃次数
        if (isGrounded)
        {
            jumpTimes = jumpTimesCounter;
        }

        //跳跃次数大于0 时按下space可以跳跃
       if(  Input.GetKeyDown(KeyCode.Space) && jumpTimes > 0)
        {
            //设置跳跃时间
            jumpTimeCounter = jumpTime;
            rb.velocity = Vector2.up * jumpForce;
        }

        //长按space跳得更高
        if (Input.GetKey(KeyCode.Space )&& jumpTimes>0)
        {
            //跳跃时间大于 0 时,可以长跳
            if (jumpTimeCounter > 0 )
            {
                rb.velocity = Vector2.up * jumpForce;
                jumpTimeCounter -= Time.deltaTime;
            }
           
        }

        //抬起space时,跳跃次数减1,跳跃次数为0无法再次跳跃
        if (Input.GetKeyUp(KeyCode.Space) )
        {
            jumpTimes--;
        }
    }

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值