美文网首页
打墙砖(射线)

打墙砖(射线)

作者: 归隐3中 | 来源:发表于2016-12-03 00:50 被阅读0次
    问题.png
    using UnityEngine;
    using System.Collections;
    
    public class Brick : MonoBehaviour {
    
        public GameObject brickPrefab;
        public GameObject bulletPrefab;
        void Start () {
            //6*10
            //行距
            float row =1;
            //列距
            float column=1;
            //6行
            for (int i = 0; i < 6; i++) {
                //10列
                for (int j = 0; j < 10; j++) {
                    Vector3 brickPs = new Vector3 (-4.5f + j * row, 0.5f + i * column, 3);
                    Instantiate(brickPrefab,brickPs,Quaternion.identity);
    
                }
            }
        }
        
        // Update is called once per frame
        void Update ()
        {
            
        //发射子弹
            if(Input.GetMouseButtonDown(0))
            {           
                RaycastHit hit;
                if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition),out hit))
                {
                    if (hit.collider.tag=="brick") 
                    {
                        GameObject bullet = Instantiate (bulletPrefab, Camera.main.transform.position, Quaternion.identity)as GameObject;
                        Vector3 dir = hit.point - Camera.main.transform.position;
                        dir.Normalize();
                        bullet.GetComponent<Rigidbody>().velocity = dir * 200;
                        Destroy (bullet, 3);
                    }
                }
            }
    
        }
    }
    
    整体界面.png 碰撞检测.png

    操作步骤:
    *************在场景中新建Plane,Cube,Sphere;
    *************把brick和bullet设置为预制体,并分别为其添加Rigidbody(默认值);
    *************把上述代码赋给Plane(也可新建一空物体,赋到空物体上),把两个预制体放置到对应的位置。

    代码赋值.png

    如果想让墙体在被打落之后消失,只需要将以下代码赋给brick(预制体)上即可。代码如下:

    using UnityEngine;
    using System.Collections;
    
    public class xiaoshiSript : MonoBehaviour {
    
        public bool isOver = false;
        void Start () {
        
        }
        
        // Update is called once per frame
        void Update () {
            if (transform.position.y < 0 ) {
                Destroy (gameObject,1);//一秒后消失
            }
        }
    }
    
    

    *************注意:把bullet(子弹)的碰撞检测类型改为Continuous Dynamic,否则会射穿墙体。

    相关文章

      网友评论

          本文标题:打墙砖(射线)

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