SnowField目标效果2-1:无物理模拟实现重力和碰撞

办法1:设置一个量,在离开地面时开始每帧增加,落地归零,施加重力速度分量时平方相乘//已实现

办法2:地形检测,通过cast函数返回值是否为0判断碰撞//已实现


办法1实现情况:跳跃分两个阶段,第一阶段施加一种向下的速度,不断增加,抵消恒速度,
使合速度最终为零,第二阶段将重力归零,以和第一阶段同样的方式增加

        //成熟办法(可灵活使用):第一阶段施加一种向下的速度,不断增加,抵消恒速度,使玩家的合速度最终为零,第二阶段将重力归零,以和第一阶段同样的方式增加


碰撞核心代码:        
        if(rigidbody2D.Cast(direction, contactFilter2D, raycastHit2DList, distance)==0)  isTouched = false;
        else  isTouched = true;

重力部分:
    private void Update()
    {
        velocity = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
        if (isTouched == false)
        {
            gravity +=1.5f;//使重力变化
        }
        else
        {
            gravity = 20;
            getTop = false;
        }
    }

    private void FixedUpdate()
    {
        //重力速度加在Input.GetAxisRaw获得的速度上,一起传入Move
        Movement(velocity * Time.deltaTime * 10f + new Vector2(0, gravity * gravity * -0.00001f));
    }

    private void Movement(Vector2 deltaPosition)
    {
        //到达顶点速度方向改变,速度归零
        if (deltaPosition.y < 0 && getTop == false)
        { 
            gravity = 20; 
            getTop = true; 
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Attouch

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值