欢迎光临散文网 会员登陆 & 注册

Unity C# 初级编程| 10 . 角色跳跃练习

2021-03-29 19:08 作者:那个人真狗  | 我要投稿

实现物体跳跃

  • 创建俩个物体一个角色,一个地面。



  • 给操作物体增加一个物理碰撞,

  • 因为是2D游戏,所以3D物体使用2D碰撞也是没有关系的。

    所以地面也想要增加一个碰撞

  • 调整物体位置高一点,设置一下重力

  • 调整摄像机在游戏视图显示成2D效果

  • 创建一个脚本—MyJump跳

  • 制作前思考一下,需要怎么制作。

    • 根据我们前面学习到的知识,前制作一个左右移动

    • 那就需要一个移动速度

    • 需要我们对这个物体操作

  • 前创建俩个变量

  • 一个是指定我们的物体    一个是设置移动速度

    Stadt()  脚本执行调用一次

  • 执行的时候调用我们的这个物体

    • 前使用我们原来学习过的方法制作一个左右位移动

    • 定义一个局部变量  moveInput   (移动输入)

  • 使用位移函数

  • 这个效果制作完了,确定是可以位移了,可以会插到墙壁里面

  • 这不是我们想要的效果                        

  • 准备使用第二种 新的位移方式 控制碰撞体移动

  • Rigidbody.velocity (刚体的速度向量)


    • rb 就是这个物体  velocity  当前速度,    改变这个当前速度,就可以了,

    扩展


  • Rigidbody.velocity                          刚体速度

    给我刚体一个速度:

    horizontal = Input.GetAxis("Horizontal");

    vertical = Input.GetAxis("Vertical");

    direction = new Vector3(horizontal,0f,vertical);

    rb.velocity = speed * direction;

  • Rigidbody.MovePosition()              移动刚体位置

    移动到新的position:

    Vector3 movement; float h = Input.GetAxisRaw("Horizontal");

    float v = Input.GetAxisRaw("Vertical");

    movement.Set(h, 0f, v);

    movement = movement.normalized * speed * Time.deltaTime;

    playerRigidbody.MovePosition(transform.position + movement);

  • Rigidbody.AddForce                        给刚体一个力

    rb.AddForce(transform.forward * thrust);

    public float thrust;

    rb.AddForce(0, 0, thrust, ForceMode.Impulse);


注意:

为什么不使用第一种方法,是因为我们如果碰到竖着的墙面会插入墙壁,使用第二种碰撞正好

设置这个物体

第二个阶段 设置跳

  • 新建一个布尔类型的变量,判断,角色是否跳起来了,

  • 第二个步是,需要一个位置类型,判断角色是否站到平面上。所以需要创建一个Transform类型

    还需要一个判断这个位置半径的变量。(float类型)

  • 还需要判断一下和那个层级发生检测

  • 那看一下外部属性

  • 做这一步的目的是判断是否可以按空格

  • 定义一个新变量,控制跳起的速度

  • 外部给角色制作一个判断地面的Transform

  • 编辑器打开主角———右建创建一个——命名feetPos



  • 命名,为了好在场景中看到,在右边设置一下。

  • 这样在场景中看到的效果就更好了。我们需要吧这个定位点放到角色脚下。

  • 指定到我们脚本的位置,设置属性

    下面的Whadt 需要创建一个新的层级,

    在Layer里增加一个

  • 新的层级 Ground  把地面物体设置这个层,

  • 表示这个人物脚点的挂点和这个物体判断。

  • 点击播放看一下效果

  • 现在的效果是按空格跳起来的时候,在按一下空格还会在跳,无限高,所以需要限制一下

  • Check Padous 判断值太大了, 修改0.3

  • 增加三个变量

  • 点一下空格,走这一段代码

  • 按住空格执行下面这些代码


  • JumpTme就是外部输入的数值。

  • 判断这个数值,如果大于0 就执行起跳数值,用设置的时间减去执行的时间。

    总结

  • JumpTime   表示空格键可以按多长时间,按的时间越长跳的越高。

  • 这个效果是实现按不同时间实现跳的高度也是不一样的


  • JumpTime时间越大按住的跳的越高。

    正常数值0.5就差不多,


Unity C# 初级编程| 10 . 角色跳跃练习的评论 (共 条)

分享到微博请遵守国家法律