美文网首页
大富翁(触发器)

大富翁(触发器)

作者: 归隐3中 | 来源:发表于2016-12-03 17:55 被阅读0次
    问题.png
    using UnityEngine;
    using System.Collections;
    
    public class GameControl : MonoBehaviour {
        float Timer =0;
        public GameObject coinPrefab;
    
        void Start () {
        
        }
    
        void Update () {
            CreateCoin ();
        }
    
        //1秒钟生成一个金币
        void CreateCoin(){
            Timer += Time.deltaTime;
            if (Timer >= 1) {
                Timer = 0;
                //随机生成金币的位置
                Vector3 coinPosition = new Vector3 (Random.Range (-4.7f, 4.7f),4.8f,-0.5f);
                //创建金币
                GameObject coin=Instantiate(coinPrefab,coinPosition,Quaternion.identity) as GameObject;
                Destroy (coin, 5);
            }
        }
    }
    

    操作步骤:
    新建一个小球coin(为其添加一个Rigidbody),并将其设成预制体coin;
    新建一个空物体,将上述代码赋给空物体,然后将预制体coin添加到代码上;(此时运行场景会自动生成小球)
    新建一个Cube,将如下代码赋到Cube上,并为其添加Rigidbody(此时运行场景可以实现移动Cube,与小球碰撞,并且控制台输出所接住小球的个数)
    注意:想要实现触发检测,所以需要给小球或Cube添加一个 Is Trigger (此时可以实现题目要求)

    using UnityEngine;
    using System.Collections;
    
    public class CubeScript : MonoBehaviour {
    
        public float speed;//定义移动速度
        void Start () {
        
        }
        
        // Update is called once per frame
        void Update () {
            CubeMotion ();
        }
        void CubeMotion(){
        //左右移动cube,不能超过plane的范围
            float hor =Input .GetAxis("Horizontal");
            transform.position += Vector3.right * hor * speed * Time.deltaTime;
        
        //约束移动的区间[-4,4]
            if (transform.position.x <=-4) {
                                       //当x的位置处于上方x=-4的位置时,直接跳转到下方-4的位置。
                transform.position = new Vector3 (-4, transform.position.y, transform.position.z);
            }else if (transform.position.x >= 4) {
                                       //同理,当x处于上方4是,直接跳转到4的位置。
                transform.position = new Vector3 (4, transform.position.y, transform.position.z);
            }
    
        }
        //触发检测
        int count = 0;
        void OnTriggerEnter(Collider other){
            if (other.tag == "coin") {
                //other.gameobject获取当前触发检测的游戏物体
                Destroy (other.gameObject);
                //打印金币数
                count++;
                Debug.Log ("接了" + count + "金币");
            }
        }
    }
    
    碰撞发生的条件.png

    相关文章

      网友评论

          本文标题:大富翁(触发器)

          本文链接:https://www.haomeiwen.com/subject/fhxcmttx.html