Unity3D进阶(终)

模拟重力及镜头旋转


welcome

模拟重力

使用角色控制器额的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系列的更新~~~~ (。-。)

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 模拟重力
  2. 2. 镜头控制
  3. 3. 结语