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;
}
效果出奇的好,于是我想,能不能让跳跃的高度随着按键按下的时间长短来变化
好了我失败了,果然还是不能太自大
如果用这种方法来实现昨天的鼠标拖动发射呢?
发现当赋予了初速度以后,由于没有键盘的按下抬起动作,他的速度将一直存在,如何才能让他在发射出去以后,速度逐渐归零呢
想不出来,就到这吧,下次接着想
我是真的菜啊