首页 > 代码库 > Unity学习-碰撞检测(七)
Unity学习-碰撞检测(七)
Unity脚本说明
Unity支持语言: C#(主流),JavaScript,Boo 创建脚本: 【Assets-Create-C# Script】 |
学习案例
布置场景: |
添加一个Plane,3个Cube,一个Directional light |
设置启动项(Preferences) |
导入UnityVS,方便用vs开发unity 【Assets-Import Package-Visual Studio 2014 Tools】 写一个让方块移动的脚本(Move) 【Assets-Create-C# Script】 修改脚本用VS打开 【Edit-Preferences-External Tools-选择VS2013】 编写脚本 双击Move脚本,然后打开,写上脚本 |
编写方块移动脚步(Move.cs) |
//注意Move的名字是否与你新建脚本名字相同public class Move : MonoBehaviour{ //类似一个面向组件的接口,如果是public的话,在组件中可以看到一个叫go的属性 private GameObject go; //初始化程序 void Start () { //找到 名字叫Cube4的 游戏对象 go = GameObject.Find("Cube4"); //设置游戏对象的颜色,在渲染组件中 go.renderer.material.color = Color.red; } // 游戏运行时一帧一帧的,每一帧都要调用Update()方法 void Update () { //在每一帧当中 都时时的检查 有没有按下键盘 if (Input.GetKey(KeyCode.A)) { //Time.deltaTime是帧的单位,这里是5个单位 //通过查看坐标系,确定x,y,z对应的上下左右 //Space.Self自身坐标系 go.transform.Translate(0, 0, 5*Time.deltaTime, Space.Self); } if (Input.GetKey(KeyCode.D)) { go.transform.Translate(0, 0, -5*Time.deltaTime, Space.Self); } if (Input.GetKey(KeyCode.S)) { go.transform.Translate(-5*Time.deltaTime,0,0,Space.Self); } if (Input.GetKey(KeyCode.W)) { go.transform.Translate(5*Time.deltaTime,0,0,Space.Self); } }} 此时,运行游戏,可以通过w,a,s,d进行上下左右移动了,但是这个游戏对象撞在一起回重叠,我们想要的效果是可以碰撞。 |
设置刚体(Rigidbody) |
【在Hierarchy中选择Cube,在工具栏中Component-Physics-Rigidbody】四个Cube都要设置 |
编写碰撞检测脚步(PZJC.cs) |
代码如下 public class PZJC : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } /// <summary> /// 每次游戏对象发生碰撞的时候 都会执行此方法 /// </summary> /// <param name="co">可以获得被撞的游戏对象</param> void OnCollisionEnter(Collision co) { co.gameObject.renderer.material.color = Color.blue; }} 此时运行游戏,操作 因为Cube4最先碰撞到的是Plane,所有Plane会变色 |
Unity学习-碰撞检测(七)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。