Unity入门案例-Tanks坦克大战
这是我的第一个Unity项目精简版的坦克大战看着siki视频学着做的历时一天半。
游戏描述:
我的工作:
一、坦克的移动脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TankMovement : MonoBehaviour {public float speed = 5;public float angularSpeed = 7;public float number = 1;private Rigidbody rigidbody;public AudioClip idleAudio;public AudioClip drivingAudio;private AudioSource audio;// Use this for initializationvoid Start () {rigidbody = this.GetComponent<Rigidbody>();audio = this.GetComponent<AudioSource>();}// Update is called once per frameprivate void FixedUpdate() {float v = Input.GetAxis("VerticalPlayer"+number);float h = Input.GetAxis("HorizontalPlayer" + number);rigidbody.velocity = transform.forward * v * speed;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 {audio.clip = idleAudio;if (audio.isPlaying == false)audio.Play();}}
}
二、坦克的攻击脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TankAttack : MonoBehaviour {private Transform firePosition;public GameObject shellPrefab;public KeyCode fireKey = KeyCode.Space;public float shellSpeed = 10;public AudioClip shotAudio;// Use this for initializationvoid Start () {firePosition = transform.Find("FirePosition");}// Update is called once per framevoid Update () {if (Input.GetKeyDown(fireKey)) {AudioSource.PlayClipAtPoint(shotAudio, transform.position);GameObject go = GameObject.Instantiate(shellPrefab, firePosition.position, firePosition.rotation) as GameObject;go.GetComponent<Rigidbody>().velocity = go.transform.forward * shellSpeed;}}
}
三、坦克的血量脚本
using UnityEngine;
using UnityEngine.UI;public class TankHealth : MonoBehaviour {public int hp = 100;public GameObject tankExplosin;public AudioClip tankExplosinAudio;public Slider hpSlider;private int hpTotal;// Use this for initializationvoid Start () {hpTotal = hp;}// Update is called once per framevoid Update () {}void TakeDamage() {if (hp <=0) return;hp -= Random.Range(10, 20);hpSlider.value = (float)hp / hpTotal;if (hp <= 0) {AudioSource.PlayClipAtPoint(tankExplosinAudio, transform.position);GameObject.Instantiate(tankExplosin, transform.position + Vector3.up, transform.rotation);GameObject.Destroy(this.gameObject);}}
}
四、子弹的射击脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Shell : MonoBehaviour {public GameObject shellExplosinPrefab;public AudioClip shellExplosinAudio;// Use this for initialization// Update is called once per frameprivate void OnTriggerEnter(Collider collider) {AudioSource.PlayClipAtPoint(shellExplosinAudio, transform.position);GameObject.Instantiate(shellExplosinPrefab, transform.position, transform.rotation);GameObject.Destroy(this.gameObject);if (collider.tag == "Tank") {collider.SendMessage("TakeDamage");}}
}
五、摄像机跟随脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class FollowTarget : MonoBehaviour {public Transform player1;public Transform player2;private Vector3 offset;private Camera camera;// Use this for initializationvoid Start () {offset = transform.position - (player1.position + player2.position) / 2;camera = this.GetComponent<Camera>();}// Update is called once per framevoid Update () {if (player1 == null || player2 == null) return;transform.position = (player1.position + player2.position) / 2 + offset;float dis = Vector3.Distance(player1.position, player2.position);float size = dis * 1.2f;camera.orthographicSize = size;}
}
六、背景音乐的设置
![](/assets/blank.gif)
总结:
Unity入门案例-Tanks坦克大战相关推荐
- 《Unity入门案例-Tanks坦克大战》2-场景设置
2 场景设置 2.1 本节效果预览 2.2 项目目录设置 点击Project面板的Create按钮,在根目录下面新建wm文件夹 Wm文件夹用于存放我们自己生成的Prefab和脚本等其他资源,主要是与 ...
- 基于ComblockEngine+Unity的联机版坦克大战(一)
文章目录 阶段目标 环境搭建 流程设计 相关说明 相关代码 上述源码地址 写在前面的一段话: 之前准备用LuaServer写一个简单moba手游,后来觉得,LuaServer毕竟是前公司内部的产品,不 ...
- Unity开发游戏--2D坦克大战(一)
Unity开发游戏--2D坦克大战(一) 前言 开发环境 场景搭建 新建工程 导入素材 设置Camera 设置游戏窗口大小 保存场景 创建角色 创建图片角色 修改角色大小 生成Prefab 前言 游戏 ...
- 超详细 Unity 大作业之 坦克大战
本次大作业中,我选择的主题是制作一款简单的坦克大战小游戏,实现此项目借鉴并使用了BiliBili教程及资源和学姐的博,利用Unity自带的3D导航技术实现敌人坦克的自动导航. 演示视频:Unity大作 ...
- Unity学习回忆--3D坦克大战
2023年LPL春季赛季后赛正在火热进行中,你们心中的总冠军是哪支队伍呢?作为热爱游戏的程序猿,一起来聊聊你那些有意义的游戏开发经历吧! 前言 还记得大一的时候第一次接触编程,为了手写一个hello, ...
- Unity 2D手游——坦克大战 C#
需要下载项目的朋友,请打开CSDN链接:Unity2D坦克大战项目工程 本项目涉及到的功能: 1.UI部分: a .游戏开始界面UI b.主场景UI c.游戏胜利界面UI ...
- Unity 3D做2D坦克大战,控制图片切换朝向的2种方法。
老师 | Trigger 学习者 |小白 出品 | Siki 学院 第一种更换图片切换朝向的方法: public class Player:MonoBehaviour{public float mov ...
- Unity 3D做2D坦克大战--敌人自动攻击AI编写
敌人AI攻击方法的编写 老师 | Trigger 学习者 |小白 出品 | Siki 学院 public class Enemy : MonoBehaviour {//属性值public float ...
- Unity小游戏——3D坦克大战
1.坦克能够在地上移动 第一步:首先获取移动或者旋转的方向 Input.GetAxis(); (1)Vertical 对应键盘上面的上下箭头,当按下上 ...
最新文章
- JasperReport报表设计4
- mysql 基于c_linux-基于MYSQL的C程序实践
- 【拯救赵明】 安全方案 超简单
- reactjs 类的基本知识
- Python爬虫开发:requests库的使用--https协议的问题解决
- 团队作业(五)——旅游行业的手机App
- Jmeter(二十五)Jmeter之系统函数
- dubbo中的Filter顺序是如何确定的
- 电脑模拟器哪个好_学习电脑教程:网线wifi哪个信号好
- easyui日期控件datebox的onchange事件
- 一种手机保密桌面的想法
- html做table某一列的合计,Jquery、js计算table列合计
- Cameralink转HDMI接口转换模块
- Java实现图片水印
- 【ESP 保姆级教程】疯狂传感器篇 —— 案例:UNO/Mega + MQ2烟雾传感器 + MQ3酒精传感器 + MQ7一氧化碳传感器 + OLED
- 计算机与信息学院迎新标语,学院迎新标语横幅
- CRUP为后面使用框架在页面上增删改查做下铺垫.
- 怎样批量查询顺心捷达单号信息并分析是否延误
- KVM - 虚机内核配置
- 9个免费开源的bug追踪软件
热门文章
- 【一】数据挖掘(DM)到底是何方神圣?
- hdu 1494 跑跑卡丁车~
- 1207--铁矿石涨幅
- 4种方式实现鼠标放上图片变大效果
- H3C系列交换机密码恢复方法
- vue android 4.4兼容,vue cli3 打包兼容Android 4.4
- 百度阅读器-支持超多文档格式的免费阅读器
- behavior:expression((this.hideFocus=true) (this.behavior='none'));
- java毕业生设计作品测评网站计算机源码+系统+mysql+调试部署+lw
- C# Qrcode生成二维码支持中文,带图片,带文字