项目:制作一个坦克,让它在旋转的同时发射子弹,并且让它在两秒之后销毁
问题:1.子弹怎么连续产生?
答:拖成预设体
2.子弹怎么停留两秒后销毁
答:用Destroy();放在Start函数中,每次产生新子弹之前把之前销毁之前的子弹
解析:
1.创建一个简易的坦克,里面包含以下对象(还有一个子弹模型,拖成预设体)
GameObject这个空物体是发射子弹的地方,如图示
注意:要想子弹发射的方向跟炮筒Cylinder的方向一致,必须将子弹和GameObject的rotation都设成跟炮筒Cylinder的一样
2.创建一个FlyScript脚本挂在子弹身上,实现子弹的发射和销毁
usingSystem.Collections;
usingSystem.Collections.Generic;
usingUnityEngine;
publicclassFlyScript:MonoBehaviour
{
voidStart()
{
//每产生一个新子弹之前,进行一次销毁的操作,每2秒销毁一个子弹
Destroy(gameObject,2f);
}
voidUpdate()
{
//发射子弹,transform.up是自身方向的y轴,加上Space.World后就是相对于世界坐标的方向
transform.Translate(transform.up,Space.World);
}
}
3.创建一个脚本挂在GameObject(即发射口)上实现子弹连续不断的产生
将子弹bullets预设体拖动这里
usingSystem.Collections;
usingSystem.Collections.Generic;
usingUnityEngine;
publicclassTankScript:MonoBehaviour
{
//子弹
publicGameObjectbullets;
//计时器
privatefloattimer;
voidUpdate()
{//每一秒产生一颗子弹
timer+=Time.deltaTime;
if(timer>=1f){
timer=0;
Instantiate(bullets,transform.position,transform.rotation);
}
}
}
4.创建一个脚本挂在Tank身上实现坦克的匀速旋转
usingSystem.Collections;
usingSystem.Collections.Generic;
usingUnityEngine;
publicclassRotateScript:MonoBehaviour
{
voidUpdate()
{
//使得坦克匀速旋转
transform.Rotate(0,5*Time.deltaTime,0);
}
}