文档详情

(unity3d游戏开发之控制模型移动旋转与碰撞.doc

发布:2017-01-27约2.19千字共8页下载文档
文本预览下载声明
? 上一章介绍了模型的旋转与平移,本章介绍一些 //旋转移动速度 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 .大家快试试吧。哇咔咔~~ ?
显示全部
相似文档