以下为源码,如有错误欢迎指教。
using UnityEngine;

///
/// 坦克生成复活脚本
///
public class Born : MonoBehaviour
{
[Header(“坦克生成特效脚本:补充代码,实现要求”)]

public GameObject playerPrefab;
public GameObject enemyPrefab;
public bool createPlayer;void Start()
{Invoke("BornTank", 1f);Destroy(gameObject, 1);
}private void BornTank()
{if (createPlayer){Instantiate(playerPrefab, transform.position, Quaternion.identity);}else{Instantiate(enemyPrefab, transform.position, Quaternion.identity);}}

}

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

///
/// 子弹移动脚本
///
public class Bullect : MonoBehaviour
{
public float moveSpeed = 10f;
public bool IsPlayerBullect = true;

void Update()
{transform.Translate(transform.up * moveSpeed * Time.deltaTime, Space.World);
}private void OnTriggerEnter2D(Collider2D collision)
{switch (collision.tag){case "Tank":if (!IsPlayerBullect){collision.SendMessage("Die");Destroy(gameObject);}break;case "Heart":collision.SendMessage("Die");Destroy(gameObject);break;case "Enemy":if (IsPlayerBullect){collision.SendMessage("Die");Destroy(gameObject);}break;case "Wall":Destroy(collision.gameObject);Destroy(gameObject);break;case "Barriar":Destroy(gameObject);break;case "Border":Destroy(gameObject);break;default:break;}
}

}

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

///
/// 爆炸特效
///
public class ExplosionAni : MonoBehaviour
{
public void OnDestroy()
{
Destroy(gameObject);
}
}

using UnityEngine;

///
/// Heart属性脚本
///
public class Heart : MonoBehaviour
{
public Sprite BorkenSprite;
private SpriteRenderer sr;

private void Awake()
{sr = GetComponent<SpriteRenderer>();
}public void Die()
{AudioManager.Instance.AudioPlay("HeartDamage");sr.sprite = BorkenSprite;Invoke("GameOver", 0.5f);
}private void GameOver()
{PlayerManager.Instance.lifeValue = 0;PlayerManager.Instance.isDefeat = true;
}

}

using UnityEngine;

///
/// 音效管理脚本
///
public class AudioManager : MonoBehaviour
{
private static AudioManager _instance;
public static AudioManager Instance
{
get
{
return _instance;
}
}
private bool isMute = false;

public bool IsMute
{get{return isMute;}
}void Awake()
{_instance = this;isMute = (PlayerPrefs.GetInt("mute", 0) == 0) ? false : true;
}// 游戏音效
public void AudioPlay(string audio)
{AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("AudioSource/" + audio), new Vector3(0, 0, -6));
}

}

using UnityEngine;

///
/// 敌方坦克脚本
///
public class Enemy : MonoBehaviour
{
[Header(“敌方坦克脚本:补充脚本,实现要求”)]

// 属性值
public float moveSpeed = 5;
private Vector3 bullectEulerAngles;
private float v = -1;
private float h;// 引用
private SpriteRenderer sr;
public Sprite[] tankSprite;         //上 下 左 右
public GameObject bullectPrefab;
public GameObject ExplosionAni;// 计时器
private float timeVal;
private float timeValChangeDirection;void Awake()
{sr = GetComponent<SpriteRenderer>();
}void Update()
{// 攻击的时间间隔if (timeVal >= 3){Attack();}else{timeVal += Time.deltaTime;}
}private void FixedUpdate()
{Move();
}// 坦克的攻击方法
private void Attack()
{// 子弹产生的角度:当前坦克的角度+子弹应该旋转的角度。Instantiate(bullectPrefab, transform.position, Quaternion.Euler(transform.eulerAngles + bullectEulerAngles));timeVal = 0;}// 坦克的移动方法
private void Move()
{if (timeValChangeDirection >= 3){int num = Random.Range(0, 8);if (num > 5){v = -1;h = 0;}else if (num <= 1){v = 1;h = 0;}else if (num > 1 && num <= 3){h = -1;v = 0;}else if (num > 3 && num <= 5){h = 1;v = 0;}timeValChangeDirection = 0;}else{timeValChangeDirection += Time.fixedDeltaTime;}transform.Translate(Vector3.up * v * moveSpeed * Time.fixedDeltaTime, Space.World);if (v < 0){sr.sprite = tankSprite[2];bullectEulerAngles = new Vector3(0, 0, -180);}else if (v > 0){sr.sprite = tankSprite[0];bullectEulerAngles = new Vector3(0, 0, 0);}if (v != 0){return;}transform.Translate(Vector3.right * h * moveSpeed * Time.fixedDeltaTime, Space.World);if (h < 0){sr.sprite = tankSprite[3];bullectEulerAngles = new Vector3(0, 0, 90);}else if (h > 0){sr.sprite = tankSprite[1];bullectEulerAngles = new Vector3(0, 0, -90);}
}// 坦克的死亡方法
private void Die()
{AudioManager.Instance.AudioPlay("Explosion");// 产生爆炸特效Instantiate(ExplosionAni, transform.position, transform.rotation);// 死亡Destroy(gameObject);
}private void OnCollisionEnter2D(Collision2D collision)
{if (collision.gameObject.tag == "Enemy" || collision.gameObject.tag == "Wall" ||collision.gameObject.tag == "River" || collision.gameObject.tag == "Barriar" ||collision.gameObject.tag == "Border"){timeValChangeDirection = 3;}if (collision.gameObject.tag == "Tank" || collision.gameObject.tag == "Heart"){Attack();}
}

}

using UnityEngine;
using UnityEngine.SceneManagement;

///
/// 选择控制脚本
///
public class MainOptions : MonoBehaviour
{
[Header(“选择控制脚本:补充脚本,实现要求”)]

public Transform posOne;
public Transform posTwo;
private int choice = 1;void Update()
{if (Input.GetKeyDown(KeyCode.W)){choice = 1;transform.position = posOne.position;AudioManager.Instance.AudioPlay("Hit");}else if (Input.GetKeyDown(KeyCode.S)){choice = 2;transform.position = posTwo.position;AudioManager.Instance.AudioPlay("Hit");}if (choice == 1 && Input.GetKeyDown(KeyCode.Space)){SceneManager.LoadScene(1);}
}

}

using UnityEngine;

///
/// 玩家控制脚本
///
public class Player : MonoBehaviour
{
[Header(“玩家控制脚本:补充脚本,实现要求”)]

public float moveSpeed = 5;
private float timeVal;public Sprite[] tankSprite;     // 上 下 左 右
private SpriteRenderer sr;public GameObject ExplosionAni;
public GameObject bullectPrefab;
private Vector3 bullectEulerAngles;
public AudioSource moveAudio;
public AudioClip[] tankAudio;private void Awake()
{sr = GetComponent<SpriteRenderer>();
}private void Update()
{// 攻击的CDif (timeVal >= 0.4f){Attack();}else{timeVal += Time.fixedDeltaTime;}
}private void FixedUpdate()
{if (PlayerManager.Instance.isDefeat){return;}Move();
}// 坦克的攻击方法
private void Attack()
{if (Input.GetMouseButtonDown(0)){AudioManager.Instance.AudioPlay("Fire");// 子弹产生的角度:当前坦克的角度+子弹应该旋转的角度。Instantiate(bullectPrefab, transform.position, Quaternion.Euler(transform.eulerAngles + bullectEulerAngles));timeVal = 0;}
}// 坦克的移动方法
private void Move()
{float v = Input.GetAxisRaw("Vertical");transform.Translate(Vector3.up * v * moveSpeed * Time.fixedDeltaTime, Space.World);if (v < 0){sr.sprite = tankSprite[2];bullectEulerAngles = new Vector3(0, 0, -180);}else if (v > 0){sr.sprite = tankSprite[0];bullectEulerAngles = new Vector3(0, 0, 0);}if (Mathf.Abs(v) > 0.05f){moveAudio.clip = tankAudio[1];if (!moveAudio.isPlaying){moveAudio.Play();}}if (v != 0){return;}float h = Input.GetAxisRaw("Horizontal");transform.Translate(Vector3.right * h * moveSpeed * Time.fixedDeltaTime, Space.World);if (h < 0){sr.sprite = tankSprite[3];bullectEulerAngles = new Vector3(0, 0, 90);}else if (h > 0){sr.sprite = tankSprite[1];bullectEulerAngles = new Vector3(0, 0, -90);}if (Mathf.Abs(h) > 0.05f){moveAudio.clip = tankAudio[1];if (!moveAudio.isPlaying){moveAudio.Play();}}else{moveAudio.clip = tankAudio[0];if (!moveAudio.isPlaying){moveAudio.Play();}}
}// 坦克的死亡方法
private void Die()
{PlayerManager.Instance.isDead = true;// 产生爆炸特效Instantiate(ExplosionAni, transform.position, transform.rotation);AudioManager.Instance.AudioPlay("Explosion");// 死亡Destroy(gameObject);
}

}

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

///
/// 玩家状态管理脚本
///
public class PlayerManager : MonoBehaviour
{
[Header(“玩家状态管理脚本:补充脚本,实现要求”)]

// 单例
private static PlayerManager instance;
public static PlayerManager Instance
{get{return instance;}set{instance = value;}
}// 属性值
public int lifeValue = 3;
public bool isDead;
public bool isDefeat;
// 引用
public GameObject bornAni;
public GameObject isDefeatUI;private void Awake()
{Instance = this;
}void Update()
{if (isDefeat){isDefeatUI.SetActive(true);Invoke("ReturnToTheMainMenu", 3);return;}if (isDead){Recover();}
}private void Recover()
{if (lifeValue <= 0){//游戏失败,返回主界面isDefeat = true;Invoke("ReturnToTheMainMenu", 3);}else{lifeValue--;GameObject go = Instantiate(bornAni, new Vector3(-2, -8, 0), Quaternion.identity);go.GetComponent<Born>().createPlayer = true;isDead = false;}
}private void ReturnToTheMainMenu()
{SceneManager.LoadScene(0);
}

}

有兴趣的小伙伴欢迎私信

重磅来袭(90街机坦克大战unity制作)相关推荐

  1. C语言经典红白机坦克大战

    今天给大家分享一个C语言实现坦克大战游戏,有完整版的源码哦~ 效果展示: 编译环境:VS2019,EasyX_20210730 图片素材: 音乐素材: 地图背景源码: 坦克系统源码: 完整坦克大战源码 ...

  2. 简单 坦克大战 pygame -制作

    首先,第一步,游戏简单素材的准备. 炮弹,坦克移动.音乐-开火素材. 其次,思路整理. 我们需要几个类,分别是玩家类,敌人类,炮弹类及地图类,开始游戏界面以及结束界面,血条等等. 开始coding. ...

  3. 一个C语言编写的坦克大战游戏

    在VC6.0平台下运用一个EasyX的图形库,用C语言编写了一个坦克大战的小游戏,代码和算法都是我自己源生的.文章的两幅配图,分别展示了游戏的开始选择界面和正在游戏界面.这个小游戏,具有游戏背景音乐, ...

  4. 用Python实现坦克大战游戏 | 干货贴

    作者 | 李秋键 出品 | AI科技大本营(rgznai100) <坦克大战>是1985年日本南梦宫Namco游戏公司在任天堂FC平台上,推出的一款多方位平面射击游戏.游戏以坦克战斗及保卫 ...

  5. Java版90经典坦克大战下载_经典90坦克大战

          经典90坦克大战是1985年在任天堂FC平台上,推出的一款多方位平面射击坦克游戏.此次经典90坦克大战发布,由权威的决战坦克论坛管理员集成了新旧两个版本的地图编辑器.和朋友们一起重回坦克大 ...

  6. Unity开发笔记(五)—— 制作第四个小游戏《坦克大战》

    目录 使用VS传统方法制作 使用Unity制作 使用VS传统方法制作 写在前面的话 C#可以干什么? 桌面应用开发(用的少,现在市面上的桌面应用大部分是C++开发的) Unity游戏开发 Web开发( ...

  7. java 90坦克大战_java小项目之:坦克大战,90后的集体回忆杀!

    坦克大战小项目! 在小学初中的时候,我相信我们都曾经沉迷于一种玩具"红白机",这应该是80后90后的童年回忆.用绝对好好学习的誓言,求着父母买一台.自己学会插在电视机上,再和小伙伴 ...

  8. Unity学习笔记5:2D坦克大战

    之前看了很长一段时间的视频,但是基本没有手动操作过,究竟沉淀了多少还真难说得清楚. 所以直接看实例视频跟着做了. 视频地址:http://www.sikiedu.com/my/course/90 un ...

  9. TanksWar(坦克大战三维、二维版以及90版)

    文章目录 1. 按 2. 代码下载 3. 三维版说明 4. 二维版说明 5. 90版说明 6. 游戏下载 7. 书籍和视频教程资源分享 1. 按 三款坦克大战,三维版和二维版以及90版的,目前对这三款 ...

最新文章

  1. SAP QM 执行事务代码QP01,系统报错 -Material type FOOD is not defined for task list type Q-
  2. 聊聊AspectCore动态代理中的拦截器(一)
  3. 【NOI2012】骑行川藏【拉格朗日乘数法】【二分套二分】
  4. 数组操作--微信小程序学习教程
  5. 防骗指南-套路贷以及肉偿
  6. 南京邮电大学电工电子基础B实验二(电气参数测量和伏安特性)
  7. 显示100以内的所有偶数php,vb100-急需vb编程求100以内所有奇数和及所有偶数和vb编程求100以 爱问知识人...
  8. 中国电信修改光猫路由模式为桥接模式
  9. 【Hexo】hexo在文章中添加图片
  10. java.lang.IllegalArgumentException: Receiver not registered:
  11. php 表情,php emoji表情处理
  12. 第三章 迭代器(iterators)概念与traits编程技法
  13. win7 安装openssh_05、Win7上openSSH的安装与配置
  14. 我曾经遇见过一个我最想照顾一生的女孩,后来……没有后来
  15. Win10问题篇之——WIN2016和WIN10关闭同步主机服务,节省磁盘频繁读取,并关闭自动维护
  16. 【单片机毕业设计】【mcuclub-304】智能保温杯 | 语音智能水杯 | 恒温杯 | 多功能水杯
  17. 用DOS命令关闭端口
  18. 关于射频和微波PCB设计注意事项
  19. 平安好医生技术栈的分析【转】
  20. 算法手撕代码66~70

热门文章

  1. DBMS_REDEFINITION 实现对原表进行分区
  2. Photo MOS 继电器(松下、欧姆龙、力特、东芝)
  3. Mybatis实现Oracle 分页
  4. B站_千锋2020MySQL_6.04练习题
  5. 欧拉函数(dayn)
  6. [ hadoop ] hadoop入门 : 组成架构.环境搭建.运行模式
  7. 数据库工程师职业规划
  8. Android Qt入门
  9. 苹果电脑快捷键找不到了怎么办?一步简单高效的方法请收好
  10. mapgis明码文件转为点线面文件_MAPGIS平台点线面符号数据导出与绘制