【功能代码设计】3D坦克大战
插件的使用
本次开发没有使用插件
坦克移动功能
public float fSpeed = 5; //坦克行进速度public float aSpeed = 3; //坦克旋转速度public int playerSymbol = 1; //玩家标识,用于区分坦克public Rigidbody rb; //刚体组件public AudioSource auds; //音频控制器public AudioClip idleAudio; //坦克空转时引擎音效public AudioClip moveAudio; //坦克移动时引擎音效// Start is called before the first frame updatevoid Start(){rb = this.GetComponent<Rigidbody>(); //初始化刚体组件auds = this.GetComponent<AudioSource>(); //初始化音频组件}// Update is called once per framevoid Update(){Moving();}void Moving() //坦克行动代码{float v = Input.GetAxis("VerticalPlayer" + playerSymbol); //通过玩家标识绑定不同的虚拟轴rb.velocity = transform.forward * v * fSpeed; //设置行进速度float h = Input.GetAxis("HorizontalPlayer" + playerSymbol);//通过玩家标识绑定不同的虚拟轴rb.angularVelocity = transform.up * h * aSpeed; //设置旋转速度if (Mathf.Abs(h) > 0 || Mathf.Abs(v) > 0) //当坦克不为空转时{auds.clip = moveAudio; //音频控制播放引擎移动音效if (auds.isPlaying == false) //防止音频不断重复播放卡死{auds.Play();}}else //坦克空转时{auds.clip = idleAudio; //播放空转音效if (auds.isPlaying == false) //防止卡死{auds.Play();}}}
虚拟轴的绑定
两套轴,分别为Player1和Player2
Player1的水平(旋转)移动轴为a和d
Player1的垂直(行进)移动轴为w和s
Player2的水平(旋转)移动轴为←和→
Player2的垂直(行进)移动轴为↑和↓
下图以Player1的水平(旋转)移动轴的设定为例,不再赘述其他图片。
坦克开火功能
private Transform shellPosition; //子弹初始生成位置public GameObject shellPrefab; //子弹预制体public float shellSpeed = 10; //子弹飞行速度public KeyCode fireKey = KeyCode.Space; //开火按键绑定public AudioClip fireAudio; //子弹发射音效// Start is called before the first frame updatevoid Start(){shellPosition = transform.Find("ShellPosition"); //初始化子弹生成位置,在unity中优先摆放好了位置}// Update is called once per framevoid Update(){fire();}void fire(){if(Input.GetKeyDown(fireKey)) //当按下开火按钮{AudioSource.PlayClipAtPoint(fireAudio, transform.position); //生成开火音效GameObject g = GameObject.Instantiate(shellPrefab, shellPosition.position, shellPosition.rotation); //实例化子弹预制体g.GetComponent<Rigidbody>().velocity = g.transform.forward * shellSpeed; //将实例化的子弹绑定刚体,以获得发射速度}}
坦克血量功能
给坦克增加一个明显的血量条,根据当前生命值的比例而改变
private int hpMax = 100; //坦克最大生命值public int hp = 100; //坦克当前生命值public GameObject tankExpPrefab; //坦克爆炸动画public AudioClip tankExpAudio; //坦克爆炸音效public Slider hpSlider; //坦克血量显示条public GameObject Canvas; //血量显示条画布void injury(){hp = hp - 10;hpSlider.value = (float)hp / hpMax; //计算当前血量占比,显示在血量条上if (hp <= 0) {GameObject.Instantiate(tankExpPrefab, transform.position, transform.rotation);//生成爆炸动画GameObject.Destroy(this.gameObject); //摧毁坦克实体AudioSource.PlayClipAtPoint(tankExpAudio, transform.position); //播放坦克爆炸音效Canvas.SetActive(true); //将游戏结束的UI激活显示}}
【功能代码设计】3D坦克大战相关推荐
- c语言课程设计坦克大战,funcodec++课程设计_坦克大战
<funcodec++课程设计_坦克大战>由会员分享,可在线阅读,更多相关<funcodec++课程设计_坦克大战(24页珍藏版)>请在人人文库网上搜索. 1.课程设计一 坦克 ...
- js版 3D坦克大战 V0.5
欢迎体验js版的 3D坦克大战 V0.5 测试地址:http://121.199.29.66:88/. 目前只支持新版本的的chrome浏览器,有时同时进入的玩家较多,暂没有分房间,导致偶尔会较卡,请 ...
- ava联网3D坦克大战(网络编程)2020
.游戏效果 Java网络编程联机3D坦克大战 在这里插入图片描述 在这里插入图片描述 二.游戏涉及知识 服务器端运用了 IO.线程.网络.面向对象.异常 的内容, 客户端使用 unity3d引擎进行开 ...
- 3D坦克大战游戏源码
3D坦克大战游戏源码,该游戏是基于xcode 4.3,ios sdk 5.1开发.在xcode4.3.3上完美无报错.兼容ios4.3-ios6.0 ,一款ios平台上难得的3D坦克大战游戏源码,有2 ...
- unity学习3D坦克大战(六)
Unity 3D坦克大战案列学习(五) 实现相机视野的跟随 using UnityEngine; using System.Collections; /// <summary> /// 控 ...
- unity学习3D坦克大战(一)
Unity 3D坦克大战案列学习(一) 实现坦克移动和转向 using UnityEngine; using System.Collections; public class TankMovement ...
- unity学习3D坦克大战(四)
Unity 3D坦克大战案列学习(四) 实现控制特效存在的时间 using UnityEngine; using System.Collections; /// <summary> /// ...
- unity学习3D坦克大战(五)
Unity 3D坦克大战案列学习(五) 实现坦克的生命值和伤害机制 using UnityEngine; using System.Collections; using UnityEngine.UI; ...
- Unity学习回忆--3D坦克大战
2023年LPL春季赛季后赛正在火热进行中,你们心中的总冠军是哪支队伍呢?作为热爱游戏的程序猿,一起来聊聊你那些有意义的游戏开发经历吧! 前言 还记得大一的时候第一次接触编程,为了手写一个hello, ...
- java 坦克大战_java课程设计之坦克大战
本文实例为大家分享了java坦克大战的具体代码,供大家参考,具体内容如下 环境要求: 操作系统:Windows 10 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 功能提示 ...
最新文章
- Java学习提升体系结构
- Java SE和Java EE应用的性能调优
- 我被编程语言PUA了!用互联网黑话写代码,每天都在“赋能”变量
- 微信小程序/uni-app 封装请求
- java b kb mb gb 转换_java 上传文件大小转换为 GB/MB/KB/B
- Session——servlet
- Java jdbctemplate赋值_Spring 之 Spring JdbcTemplate的使用
- 云计算时代,数据中心架构三层到大二层的演变
- java flash截图_求大神们帮助, 如何在java中实现文字数据转换成图片或flash显示
- 《21天学通C#》使用.NET数据类型定义变量
- No package 'libxml-2.0' found
- bzoj_3529 数表
- 文件传输-FTP使用简介
- flex布局兼容性问题
- redis-trib.rb找不到
- 李沐动手学深度学习V2-机器翻译和数据集
- 按键精灵--函数的介绍
- criteria使用详解
- HackingLab的一套渗透测试题
- 阿里云创建及管理bucket(二)