我是从传智播客的U3D视频里看到的,最近正好在学U3D就动手试了下
首先在一开始生成箱子(脚本代码可以添加在摄像机上):
for (int i = 5; i> 0; i--) {
for(int j = i;j > 0;j--){
GameObject newObj = GameObject.CreatePrimitive(PrimitiveType.Cube); //生成箱子(方块)
newObj.transform.position = new Vector3(i,j,-18); //生成一个位置向量
newObj.AddComponent<Rigidbody>(); //生成的箱子添加脚本成为刚体。
}
}
然后再设置发射球的起始位置与鼠标指定位置:
if (Input.GetMouseButtonDown (0)) { //代表按下鼠标左键
GameObject newObj = GameObject.CreatePrimitive(PrimitiveType.Sphere); //生成球(圆形)
newObj.transform.position = Camera.main.transform.position; //生成的球的位置是当前摄像机位置
newObj.AddComponent<Rigidbody>(); //使球成为刚体
Vector3 v = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y,-16f)); //鼠标相对于世界的向量坐标,这里的-16f是需要和箱子处于一个平面
newObj.rigidbody.AddForce((newObj.transform.position - v) * 2,ForceMode.Impulse); //给予球一个推力,让他往鼠标方向发射
}
让每个脱离摄像机照射范围的对象自动销毁:把下面这个方法放到Des类中,类名随便起。
void OnBecameInvisible(){
Destroy (this.gameObject);
}
在每个生成的cube对象上:newObj.AddComponent<Des>();
如果需要在发射子弹时有声音就把声音放到摄像机上,然后在发射子弹的代码中添加GameObject.Find("Main Camera").GetComponent<AudioSource>().Play();或者GameObject.Find("Main Camera").audio.Play();
这样声音存在了,但是听不到,还需要添加一个声音监听组件:Componnt->audio->audio listener,声源在哪监听器就放在哪