1.首先将飞机和空投模型导入Unity,添加进场景视图.
2.给飞机添加飞行动画,(由于飞机只飞行一次 将Culling Mode勾选成Cull Completely)
3.给飞机和空投添加碰撞框,并勾选飞机碰撞框的 Is Trigger 用于下列脚本
射线检测和碰撞脚本如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class jiangluo : MonoBehaviour {
Rigidbody rb; //定义刚体组件
GameObject obj1; //获取俩物体
GameObject obj2;
void Start(){
rb.GetCompenent<Rigidbody>();
rb.useGravity = false; //运行开始时 不勾选重力
obj1 = GameObject.Find("CarePaKage_01"); //将场景中查找到的空投和降落伞赋给obj1和obj2
obj2 = GameObject.Find("ParachuteCare");
obj1.GetComponent<MeshRenderer>().enabled = false; //开始时将俩物体的渲染给关闭
obj2.GetComponent<MeshRenderer>().enabled = false;
}
void Update(){
Ray myray = new Ray(transform.position,Vertor3.down); //建立一条射线(有起点和方向朝下)
RaycastHit hit;
if(Physics.Raycast(myray,out hit,8)) //射线检测长度为8
{
Debug.DrawLine(myray.origin,hit.point); //在场景中画出射线
if(hit.collider.gameObject.tag=="ground") //如果射线检测到标签为"ground"的物体
{
obj2.GetComponent<MeshRenderer>().enabled = true; //射线一旦检测, 将降落伞模型渲染打开
rb.drag = 8; //射线一旦检测 赋予一个为8的阻力
}
}
}
void OnTriggerEnter(Collider other)
{
rb.useGravity = true; //飞机与空投碰撞框相撞时 让空投重力属性为true
obj1.GetComponent<MeshRenderer>().enabled = true; //同时打开空投的渲染
}
}
将此脚本挂在空投物体上
空投箱子与地面碰撞产生特效和红色信号烟粒子系统
1.首先在Unity建立两个粒子系统 一个是箱子落地产生气浪 一个是红色烟雾信号
2.调制好粒子系统个各项属性 模拟真实效果如下
接下来开始写箱子与地面的碰撞脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class pengzhuang : MonoBehaviour {
public GameObject obj; //首先public两物体用来代表两个粒子系统
public GameObject obj2;
// Use this for initialization
void Start () {
obj.SetActive(false); //开始时两个粒子系统的激活状态为false
obj2.SetActive(false);
}
// Update is called once per frame
void Update () {
}
void OnCollisionEnter (Collision col)
{
if(col.gameObject.tag=="ground") //如果箱子碰撞到标签为"ground"的地面
{
obj.SetActive(true); //将粒子系统激活状态变为true
obj2.SetActive(true);
}
}
}
将此脚本挂在空投箱子上,并且将两个粒子系统挂在脚本上
这样就能碰撞激活粒子系统产生特效了