unity从0开始摸鱼日记10,自己的尝试2

3月16日

今天尝试2d横版动作游戏的角色控制,类似蔚蓝的物理引擎,爬墙跳,冲刺之类的

对于移动,这次我想尝试之前没有尝试过的类型

要想使角色移动有3种方式

1.直接改变位置左边,这也是我一直在学习运用的,利用transform来实现

2.给刚体施加一个力的作用,使其运动,这是我昨天对小球使用的,唯一不足的是不知道为什么他不能进行抛物线运动

3.给物体赋予速度,这样他就可以往速度的方向运动。

这次选择用方向键来控制

 void Update()
    {
        float x = Input.GetAxis("Horizontal");
        float y = Input.GetAxis("Vertical");
        Vector2 dir = new Vector2(x, y);
        move(dir);
    }

    private void move(Vector2 dir)
    {
        rb.velocity = (new Vector2(dir.x * speed, dir.y * speed));
    }

实现的好轻松。。对比昨天琢磨了四个小时

但是这么弄,他丫的不会自己下落啊,重力的影响就微乎其微,所以得要想个办法

将跳跃单独分开来做一个函数

 void Update()
    {
        float x = Input.GetAxis("Horizontal");
        float y = Input.GetAxis("Vertical");
        Vector2 dir = new Vector2(x, y);
        move(dir);
       if(Input.GetKeyDown(KeyCode.Space))
        {
            jump();
        }
    }

    private void move(Vector2 dir)
    {
        rb.velocity = (new Vector2(dir.x * speed,rb.velocity.y));
    }

    private void jump()
    {
        rb.velocity = new Vector2(rb.velocity.x, 0);
        rb.velocity += Vector2.up * jumpForce;
     
    }

效果出奇的好,于是我想,能不能让跳跃的高度随着按键按下的时间长短来变化

好了我失败了,果然还是不能太自大

如果用这种方法来实现昨天的鼠标拖动发射呢?

发现当赋予了初速度以后,由于没有键盘的按下抬起动作,他的速度将一直存在,如何才能让他在发射出去以后,速度逐渐归零呢

想不出来,就到这吧,下次接着想

我是真的菜啊

发布了39 篇原创文章 · 获赞 0 · 访问量 1450

猜你喜欢

转载自blog.csdn.net/Z3Djoker/article/details/104900560