模拟重力及镜头旋转
模拟重力
使用角色控制器额的Move方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| private CharacterController cc; //定义角色y轴上的位移量 private float vy=0; //定义重力 public grivity=-9.8f //获取当前物体的任务控制器组件 cc=getCompent<CharacterController>(); //人物控制器的只读变量 IsGrounded可以判断当前控制器组件是否与地面接触 if(!cc.IsGrounded) //位移量受重力影响而减小 vy-=grivity; if(cc.IsGrounded && Input.getkeydown(KeyCode.Space)) { //模拟跳跃 vy=5; } cc.Move(transform.transformDirection(0,vy*Time.delateTime,0));
|
使用这种方法模拟重力,可以实现跳跃时,减速上升–>相对静止–>加速下降直至落地的效果
镜头控制
Fps游戏中镜头的转动,一般是通过改变摄像机的欧拉角来实现的
对于在三维空间里的一个参考系,任何坐标系的取向,都可以用三个欧拉角来表现。参考系又称为实验室参
考系,是静止不动的。而坐标系则固定于刚体,随着刚体的旋转而旋转。
亦即是说在Unity中我们可以使用一个三维向量 Vector3(x,y,z)来表示一个transform组件的欧拉角
1 2 3 4 5 6 7 8 9 10 11 12
| //获取鼠标在水平和竖直方向上的位移 float vx=Input.getAxis("Mouse X"); float vy=Input.getAxis("Mouse Y"); //获取摄像机的引用 Camera c=Camera.main; //获取当前摄像机的欧拉角 Vector3 temp=c.transform.eulerAngles; //应用位移量 temp.x+=vx; temp.y+=vy; //改变摄像机的欧拉角 c.transform.eulerAngles=temp;
|
推荐将以上方法应用在Update中实现流畅的镜头移动
结语
暑假将尽,暂时停止Unity系列的更新~~~~ (。-。)