zoukankan      html  css  js  c++  java
  • Unity学习-碰撞检测(七)

    Unity脚本说明

    Unity支持语言:
    C#(主流),JavaScript,Boo
    创建脚本:
    【Assets-Create-C# Script】

    学习案例

    布置场景:
    添加一个Plane,3个Cube,一个Directional light
    image
    设置启动项(Preferences)
    导入UnityVS,方便用vs开发unity
    【Assets-Import Package-Visual Studio 2014 Tools】
    写一个让方块移动的脚本(Move)
    【Assets-Create-C# Script】
    修改脚本用VS打开
    【Edit-Preferences-External Tools-选择VS2013】
    image 
    编写脚本
    双击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);
            }
        }
    }
    将该脚本拉到Camera中,在Inspector中可以看到
    image
    此时,运行游戏,可以通过w,a,s,d进行上下左右移动了,但是这个游戏对象撞在一起回重叠,我们想要的效果是可以碰撞。
    设置刚体(Rigidbody)
    【在Hierarchy中选择Cube,在工具栏中Component-Physics-Rigidbody】四个Cube都要设置
    编写碰撞检测脚步(PZJC.cs)
    image
    代码如下
    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,那么就把该脚本拉给Cube4
    image
    此时运行游戏,操作
    因为Cube4最先碰撞到的是Plane,所有Plane会变色
    更多精彩内容请看:http://www.cnblogs.com/2star
  • 相关阅读:
    【原创】【Android New Features】—— 关于ADT 17的BuildConfig.DEBUG
    《jQuery、jQuery UI及jQuery Mobile技巧与示例》勘误收集
    《jQuery UI开发指南》勘误收集
    获取输入框中选中文本相对于页面的偏移
    html标签对应的英文原文
    CSS选择器解析
    Input File 表单上传按钮美化
    常用CSS代码片断
    web前端开发框架搜集
    Fiddler
  • 原文地址:https://www.cnblogs.com/kimisme/p/4268211.html
Copyright © 2011-2022 走看看