上一章主要介绍了如何利用Terrain来搭建3D游戏场景,本章主要介绍通过按钮来实现模型的移动和镜头的跟随。
首先创建一个3D的Cube模型,然后添加脚本命名为CubeControl,然后绑定到刚才创建的Cube上来实现Cube的移动和旋转。
我们这里主要通过键盘的按键来实现,具体调用方法是Input.GetKey(KetCode),这个方法会在按下对应的键之后,返回一个bool值true;
同样也有Input.GetKeyDown(KetCode),当按键按下会返回true;
同样也有Input.GetKeyUp(KetCode),当按键抬起时会返回true。
下面代码:
实现按下“W“控制物体向上旋转
实现按下“S“控制物体向下旋转
实现按下“A“控制物体向左旋转
实现按下“D“控制物体向右旋转
float fSpeed = 20f; //速度
void Update()
{
#region 旋转
//向上旋转
if (Input.GetKey(KeyCode.W))
{
transform.Rotate(fSpeed, 0, 0);
}
//向下旋转
if (Input.GetKey(KeyCode.S))
{
transform.Rotate(-fSpeed, 0, 0);
}
//向左旋转
if (Input.GetKey(KeyCode.A))
{
transform.Rotate(0, fSpeed, 0);
}
//向右旋转
if (Input.GetKey(KeyCode.D))
{
transform.Rotate(0, 0, fSpeed);
}
#endregion
}
这里主要是通过transfrom.Rotate来实现物体的旋转,这里主要有四个参数,前面三个参数主要是应用一个旋转角度,zAngle度围绕z轴,xAngle度围绕x轴,yAngle度围绕y轴(这样的顺序)。
下面是物体的移动,我们主要是通过transfrom.Translate来实现物体的移动,
我们来了解一下transfrom.Translate这里主要是需要指定方向也就是Vector3.forward(表示向前方移动)这个时候在定义Vector3.forward * Time.deltaTime * fSpeed这表示每帧移动fSpeed的距离。
具体代码如下:
实现按下“↑“控制物体向上移动
实现按下“↓“控制物体向下移动
实现按下“←“控制物体向左移动
实现按下“→“控制物体向右移动
#region 移动
//向前移动
if (Input.GetKey(KeyCode.UpArrow))
{
transform.localEulerAngles = Vector3.zero;
transform.Translate(Vector3.forward * Time.deltaTime * fSpeed);
}
//向后移动
if (Input.GetKey(KeyCode.DownArrow))
{
transform.localEulerAngles = Vector3.zero;
transform.Translate(Vector3.back * Time.deltaTime * fSpeed);
}
//向左移动
if (Input.GetKey(KeyCode.LeftArrow))
{
transform.localEulerAngles = Vector3.zero;
transform.Translate(Vector3.left * Time.deltaTime * fSpeed);
}
//向右移动
if (Input.GetKey(KeyCode.RightArrow))
{
transform.localEulerAngles = Vector3.zero;
transform.Translate(Vector3.right * Time.deltaTime * fSpeed);
}
#endregion
这个时候我们运行就会发现两个问题:
-
相机并不随着物体的移动而移动
-
物体碰到障碍物,直接穿透了,不符合常理
下面我们来解决这两个问题,首先我们可以为场景中的主相机添加一个跟随脚本,在Unity3D标准资源的脚本中系统帮我们写好了跟随脚本.我们选中主相机点击Compent->Scripts->UnityStandardAssets.Utility->Smooth Follow,具体如下图:
这个时候你会发现相机上多了脚本:
这个时候只需要把cube拖到Target中,这个时候你在重新运行项目你会发现,主摄像机已经开始跟着cube移动了,是不是很酷!
下面我们来解决cube穿过障碍物的问题,这里我们需要为cube添加一个重力碰撞,这样就会为cube增加一个重力感应,点击 Component – > Physics – > Rigidbody :
这个时候我们在点击运行游戏,会发现当物体碰到数目或者山丘时,会被弹开,来吧大家可以试一下自己做的项目吧!
下面是工程的链接,可以自行下载查看:
链接:http://pan.baidu.com/s/1boHx50b 密码:wqfi
想了解更多,请关注我的个人公众号,或者添加QQ群:879354767,关注有惊喜哦!: