使用CharacterController的Move方法实现移动 由速度随位移的变化规律:2gH=Vt²-V0²,跳跃向上的初速度会等于√-2gH void Update() { //地面检测,如果踩在地面返回true否则返回false isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance,
人物方向移动依靠Horizontal和Vertical方向键控制 需要注意坐标轴为局部坐标轴transform.righttransform.forward 重力根据重力公式修改velocity.y的速度,需要检测地面,在人物底面添加CheckGround空对象来探测 跳跃根据公式模拟,修改物体速度即可 (本文为原博文迁移)
public CharacterController controller; //这里是人物行走时的速度 public float walkSpeed = 5f; //人物跑动时的速度 public float runSpeed = 6f; //重力 public float gravity = -9.81f; //三维向量组x,y,z Vector3 velocity; public Transform groundCheck; //检测人物是否与地面碰撞的半径 public float ...
将Ground Check置于角色的脚底。 创建地面 接下来我们要新建一个Layer,用于表示地面。 将Square改名为Ground,并修改其Layer为Ground。 在这里插入图片描述 角色控制脚本 接着新建一个CharacterController2D脚本,用于控制角色。将该脚本挂载到玩家的身上。 检测地面 为了实现跳跃功能,我们需要检测地面的存在,如果玩家处于...
vida.jumpTimer += dt;//TODO 待优化代码//是否到地面 用三个groundCheck来检测//public Transform[] groundChecks = new Transform[3];for(inti =0; i <3; ++i) { checkResult = Physics2D.Linecast(transform.position, groundChecks[i].position,1<< LayerMask.NameToLayer("Ground")); ...
RunCycleLegOffset:奔跑状态下起跳时用于计算两腿前后相对位置的偏移参数 MoveSpeedMultiplier:移动速度的乘量因子 AnimSpeedMultiplier:移动动画的乘量因子 GroundCheckDistance:判断角色是否着地的检测距离 ThirdPersonUserControl类: 无公开字段,故不截图。根据用户输入控制角色运动。
2.鼠标自由视角 CharacterController 两个脚本,PlayerMovement控制身体的位移,PlayerCamera控制自己的相机的旋转 public class PlayerMovement : MonoBehaviour{ public CharacterController controller; public float speed = 12f; public float gravity = 10f; public float jumpHeight = 2f; public Transform groundCheck; ...
[SerializeField] private AudioClip m_JumpSound; // the sound played when character leaves the ground. [SerializeField] private AudioClip m_LandSound; // the sound played when character touches back on ground. private Camera m_Camera; private bool m_Jump; private float m_YRotation; private ...
添加一个新的layer,命名为Ground,并将上面建立的plane设置为Ground层 在plane上添加若干个box作为障碍物,添加一个新的layer,命名为Obstacles, 将这些box都归为这个Obstacles层 2.加入A* 创建一个空的GameObject,命名为A*, 从Components–>Pathfinding–>Pathfinder中添加插件脚本AstarPath。可以再AstarPath的观察器中看...
public CharacterController controller; public float speed = 12f; public float gravity = 10f; public float jumpHeight = 2f; public Transform groundCheck; public float groundDistance = 0.4f; public LayerMask groundMask;//地面layer Vector3 velocity; ...