Unity3D制作简易坦克旋转发射子弹

项目:制作一个坦克,让它在旋转的同时发射子弹,并且让它在两秒之后销毁

问题: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);

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容