(unity3d游戏开发之控制模型移动旋转与碰撞.doc
文本预览下载声明
? 上一章介绍了模型的旋转与平移,本章介绍一些
//旋转移动速度
var Speed = 50;
//控制对象
var Control;
function Update()
{
??//得到控制对象
??Control = GetComponent(js1);
??//判断按键
??if(Input.GetKey(KeyCode.W))
??{
? ?? ?? ? //前进
? ?? ?? ???Control.ForWard();
??}else if(Input.GetKey(KeyCode.S))??
??{
? ?? ???//后退
? ?? ?? ? Control.Back();
??}
? ? if(Input.GetKey(KeyCode.A))
??{
? ?? ?? ? //前左
? ?? ?? ???Control.GLeft();
??}else if(Input.GetKey(KeyCode.D))??
??{
? ?? ???//后右
? ?? ?? ? Control.GRight();
??}
??if(Input.GetKey(KeyCode.Q))
??{
? ?? ?//左旋转
? ? Control.leftRotate(Vector3.up *Time.deltaTime * -Speed);
??}else if(Input.GetKey(KeyCode.E))
??{
? ? //右旋转
? ?? ?Control.RightRotate(Vector3.up *Time.deltaTime * Speed);
??}
}
//前进速度
var Speed = 50;
//前进
function ForWard()
{
? ? transform.Translate(Vector3.forward * Time.deltaTime *Speed);
}
//后退
function Back()
{
? ? transform.Translate(Vector3.forward * Time.deltaTime * -Speed);? ?? ???
}
//向左
function GLeft()
{
? ? transform.Translate(Vector3.right * Time.deltaTime *-Speed);
}
//向右
function GRight()
{
? ? transform.Translate(Vector3.right * Time.deltaTime * Speed);? ?? ???
}
//传递参数
//左旋转
function leftRotate(obj)
{
? ? transform.Rotate(obj);? ?
}
//右旋转
function RightRotate(obj)
{
? ? transform.Rotate(obj);? ?
}
复制代码
? ?? ? OK点击运行,通过按键我们可以正常的控制模型平移与旋转,但是现在有两个问题 1, 主摄像机不能跟随控制模型, 2??、模型可以横穿过山丘,感觉很假。下面我们解决这两个问题。? ?? ? 在unity3d标准资源的脚本中系统帮我们写好了跟随脚本.如下图所示,点击Import Package – Scripts 将系统脚本导入。? ?? ?? ?? ?? ?? ?? ?? ?? ?????? ?? ? 选中摄像机 点击Component – Camera-Control – Smoot Follow ,给主摄像机添加一个跟随脚本。? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???? ?? ? 跟随脚本添加完以后,须要指定一个跟随的物体,下面红框内将跟随的物体Cube拖动进来,这里Cube就是我们上面控制的模型,那么这样,摄像机将会一直在身后跟随我们控制的模型。下面是一些跟随的参数,设置 跟随的距离 高度等等,盆友们手动的修改一下运行游戏就可以看出来变化,。? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???? ?? ? 控制物体的碰撞可以使用 选中模型, Component – Physics – Rigidbody 设置这个模型的重力碰撞。那么这样你控制的模型就不会穿过山丘,而是感应重力碰撞。? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???? ?? ? 点击运行游戏,看看效果,控制箱子行走的同时,我们可以清晰的看出旁边的树木被物理碰撞所干扰,前后,左右,旋转 完全OK .大家快试试吧。哇咔咔~~?
显示全部