超详细 Unity 大作业之 坦克大战

本次大作业中,我选择的主题是制作一款简单的坦克大战小游戏,实现此项目借鉴并使用了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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值