本节要点
1.实例化游戏物体
1.游戏中的案例介绍
在很多 MMORPG 类的游戏中都有类似于“金钱副本”的副本关卡。在这类副
本中通常都是限定一个时间,在这个时间内玩家可以尽情的破坏,然后收集金钱。
分析游戏截图讲解场景元素:[见图]
①场景中所有的坛子,模型都是一样的,坛子是预制体。
②坛子是从“天上”掉下来的,所以坛子模型身上有刚体组件。
③如果玩家在一段时间内没有打碎坛子,这些坛子会消失。
2.案例场景制作
①创建地面模型;
②创建“坛子”模型,并制作成预制体;
3.实例化生成 1 个坛子
GameObject.Instantiate(Object, Vector3, Quaternion);
参数说明:
Object:用于实例化的预制体;
Vector3:实例化后生成的物体所在的位置;
Quaternion[四元数]:实例化后生成的物体的旋转状态;
Quaternion.identity:无旋转;
4.构造随机位置
位置是用 Vector3 类型进行表示的。
X,Y,Z 三个值确定了物体在三维世界中的位置。
Random.Range(min, max):生成随机数。
在 min 和 max 直接随机生成一个随机数。
演示:按下键盘的一个键,就在随机位置实例化一个物体。
2.销毁游戏物体
GameObject.Destroy(Object, float);定时销毁某个游戏物体。
参数说明:
Object:要销毁的游戏物体;
float:时间,多少秒后销毁;
关键代码
CreateBoxs
public class CreateBoxs : MonoBehaviour {
//定义公开变量 并通过拖曳 把相关预置体拖至相关属性下
public GameObject goPrefab;
void Start () {
//实例化对象关键语句(静态方法)
// GameObject.Instantiate(goPrefab,Vector3.up,Quaternion.identity);//参数1:预置体,就是要实例化的对象;参数2:0位置上方1米,参数3:4元数无旋转
//自己定义随机范围(位置)
// Vector3 position = new Vector3(1,1,1);
//Vector3 position = new Vector3(Random.Range(-9.0f,9.0f),10,Random.Range(-9.0f,9.0f));//参数1:X轴的范围 Y固定下高度,Z轴的范围
//GameObject.Instantiate(goPrefab,position,Quaternion.identity);
//通过按下空格键随机实例化box;
}
void Update () {
//通过按下空格键随机实例化box;
if (Input.GetKeyDown(KeyCode.Space))
{
Vector3 position = new Vector3(Random.Range(-9.0f,9.0f),10,Random.Range(-9.0f,9.0f));
GameObject.Instantiate(goPrefab,position,Quaternion.identity);
}
}
}
DestroyBox
public class DestroyBox : MonoBehaviour {
// Use this for initialization
void Start () {
//出现段时候后,销毁物体 关键语句 gameobject静态类方法
GameObject.Destroy(gameObject,Random.Range(5.0f,10.0f));//参数1:销毁物体的对象(就是本身) 参数2:销毁的时间
//以上方法只能写在start方法里,不能写在其他update方法中;
}
//// Update is called once per frame
//void Update () {
//}
}