以下为源码,如有错误欢迎指教。
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. 发现价值(1)-无限的网络资源
  2. hql删除mysql语句_mysql-使用Hibernate @SQLDelete对所有实体进行软删除
  3. oracle忘记口令
  4. android 两种实现计时器时分秒的实现,把时间放在你的手中~
  5. opengl源码 实现无缝切换图片过场_手把手讲解 Android hook技术实现一键换肤
  6. 设计模式(七)适配器模式(Adapter Pattern)
  7. oracle控制文件
  8. eclipse html插件的下载和安装
  9. sql 时间日期格式转换
  10. 探码SaaS帮助企业开展数字化营销之路!
  11. GPFS实施方案的思考
  12. 高精度WGS84与GCJ-02坐标转换
  13. PS2022神经滤镜Neural Filters离线安装包(PS2022/PS2021)
  14. springboot基于协同过滤算法的书籍推荐毕业设计源码101555
  15. 网站老是被劫持怎么办、网站被劫持的解决方案有哪些
  16. linux can总线接收数据串口打包上传_【Linux应用】CAN总线编程
  17. php去掉工作日,2014年工作日计算(去除法定假日和周六日,但包括调休日)
  18. 基于深度学习的显著性目标检测方法综述
  19. python自带的shell、其性能优于ipython吗_尔雅通识课《社会体育学》答案
  20. 为什么我不再使用MVC框架?

热门文章

  1. 寄快递怎么自动给收件人发短信通知?
  2. Pod创建多个容器并访问指定容器
  3. 智能社 - VueJs(1-11章全)
  4. 最土团购修改短信接口
  5. 导致android app Force Close原因,如何规避
  6. 搜索引擎网站收录地址大全
  7. linux下hp ssp在线更新固件,HPE SSP固件升级文档
  8. php文库系统解决方案
  9. 3ds-Max2016 安装 无法正常打开win10
  10. VUE 切换页面后点击按钮没有反应