Unity15--射线伤害门程序:(线性检测)和吃金币,吸铁石功能的实现:(球形检测)

 一、伤害门,任何物体经过两个物体之间都会毁灭消失

     做题流程:三个文件构成:

     //1.产生创建脚本CreateCubes文件和CubeMove移动脚本CubeMove不用赋给任何文件

    //PhysicsDemoCreateCubes都给了空文件夹记得赋值 startObj;endObj;

    //2.Unity面板里Tag里添加Door,两个物体都标签Door,如果不是标签Door的就毁灭

    //3.两个门之间距离不宜太远

----------------------------------------------------------------------------------------------------------------------------------------

 //线性检测最上面定义的

    public GameObjectstartObj;

    public GameObject endObj;

1. PhysicsDemo文件

  void Update () {

       RaycastHit hit;        //检测射线碰撞到的点

       ifPhysics.Linecast(startObj.transform.position,endObj.transform.position,out hit))

          {

              if(!hit.collider.gameObject.CompareTag("Door"))//Unity面板里Tag里添加Door,两个物体都标签Door,如果不是标签Door

                                                                                            的就毁灭

               {

                  Destroy(hit.collider.gameObject);

                }

          }

  }

2. CreateCubes文件下

float timer = 0.0f;

void Update () {

        timer += Time.deltaTime;

        if(timer>3)    //3秒创建一个方块。

        {

           timer -= 3;

            GameObject obj =GameObject.CreatePrimitive(PrimitiveType.Cube);

           obj.transform.position = newVector3(0, 0, 0);

           obj.AddComponent<CubeMove>();      //添加组件的方式

        }

   }

3. CubeMove文件下:   //不用赋给任何文件

  void Update () {      //不断产生移动的方块往伤害门走

       transform.Translate(transform.forward * Time.deltaTime);

    }

Unity15--射线伤害门程序:(线性检测)和吃金币,吸铁石功能的实现:(球形检测)

二、球型检测,吃金币,吸铁石功能的实现(两个文件)

       //吃道具,收集金币使用碰撞检测

     //球体检测,用到CubeMove2和CoinMove ,添加标签,金币是吸铁石,在Tag面板里添加Tag  --吸铁石

     //Magnet,金币都添加刚体,去掉重力,勾选IsTagger ,

     //全选所以小球面板右边Add添加,搜CoinMove都添加了这个文件,

-------------------------------------------------------------------------------------------------------------------------------

 实现的流程:

    1.两个文件CubeMove2 和CoinMove文件,CubeMove2 文件给了Player文件,CoinMove给了小球们

    2. Magnet 和金币都各自在Unity面板里添加标签,标签必须写对对应

    3.Magnet和Coins都添加--刚体把重力的√去掉,都点击Is Trigger触发

    金币目标是Player 不点Is Move ,让小球不移动,再了运行,Player会先吃掉Magnet,再了往前走,走到小球那,小球会 

    挨个飞过去,销毁

---------------------------------------------------------------------------------------------------------------------------------

1.. CubeMove2文件

    bool isMagnet =false;       //一开始让吸铁石为错误

    publicfloat speed;

1.void Update () {

        transform.Translate(transform.forward *speed *Time.deltaTime);

        if(isMagnet)

        {

            Collider[] cols =Physics.OverlapSphere(transform.position, 10);  //距离,后面可改

            foreach (var itemin cols)

            {

                if(item.gameObject.CompareTag("Coin"))                                    //加标签必须对

                {

                    item.GetComponent<CoinMove>().isMove =true;

                }                 

            }

        }

  }

 

  2. void OnTriggerEnter(Collider other)//触发器

    {

        if(other.gameObject .tag =="Magnet")

        {

            Destroy(other.gameObject);

            isMagnet = true;

        }

    }

2. CoinMove文件:

publicTransform target;

publicbool isMove =false;

1.void Update () {

           if(isMove)

       {

            //球朝向目标移动

            transform.position =Vector3.Lerp(transform.position, target.position,0.2f);

       }

         }

 2.  void OnTriggerEnter(Collider other)

    {

        if(other.gameObject.CompareTag("Player"))

        {

            Destroy(gameObject);

        }

    }

Unity15--射线伤害门程序:(线性检测)和吃金币,吸铁石功能的实现:(球形检测)