本次大作业中,我选择的主题是制作一款简单的坦克大战小游戏,实现此项目借鉴并使用了BiliBili教程及资源和学姐的博,利用Unity自带的3D导航技术实现敌人坦克的自动导航。
演示视频:Unity大作业-坦克大战_演示
项目地址:坦克大战
参考视频:坦克大战教程
学姐博客:第15周-坦克
文章目录
游戏设计
- 坦克大战,必须包含3D导航技术(Enemy NPC使用unity的NavMeshAgent自动导航)
- 坦克分为Player和Enemy(用两套逻辑脚本控制行为)。Player通过键盘输入控制移动和发射子弹,Enemy使用AI导航移动和利用协程发射子弹
- 子弹伤害设置
- 血条控制
- 相机视野跟随
- 美化(爆炸使用粒子特效,音效)
构建场景
首先准备游戏资源,在这
https://pan.baidu.com/s/1UXRHwSMr5DMDoPOCuv6beg
提取码:ksv7
具体实现
Player 坦克
Tank_Movement.cs (移动)
public class Tank_Movement : MonoBehaviour
{
public float speed = 5;//坦克移动速度
public float angularSpeed = 10;//坦克旋转速度
public AudioClip idleAudio;//静止声音
public AudioClip drivingAudio;//发动声音
private new AudioSource audio;//声音组件
private new Rigidbody rigidbody;
// Start is called before the first frame update
void Start()
{
rigidbody = this.GetComponent<Rigidbody>();//获得刚体组件
audio = this.GetComponent<AudioSource>();//获得声音组件
}
// Update is called once per frame
void FixedUpdate()
{
float v = Input.GetAxis("Vertical");//对应键盘上下箭头,按下触发
rigidbody.velocity = transform.forward*v*speed;//利用刚体加速度
float h = Input.GetAxis("Horizontal");//对应键盘左右箭头,按下触发
rigidbody.angularVelocity = transform.up*h*angularSpeed;
if(Mathf.Abs(h) > 0.1||Mathf.Abs(v)>0.1){
audio.clip = drivingAudio;
if(audio.isPlaying==false)
audio.Play();
}
else{
audi