插件的使用

本次开发没有使用插件

坦克移动功能

    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坦克大战相关推荐

  1. c语言课程设计坦克大战,funcodec++课程设计_坦克大战

    <funcodec++课程设计_坦克大战>由会员分享,可在线阅读,更多相关<funcodec++课程设计_坦克大战(24页珍藏版)>请在人人文库网上搜索. 1.课程设计一 坦克 ...

  2. js版 3D坦克大战 V0.5

    欢迎体验js版的 3D坦克大战 V0.5 测试地址:http://121.199.29.66:88/. 目前只支持新版本的的chrome浏览器,有时同时进入的玩家较多,暂没有分房间,导致偶尔会较卡,请 ...

  3. ava联网3D坦克大战(网络编程)2020

    .游戏效果 Java网络编程联机3D坦克大战 在这里插入图片描述 在这里插入图片描述 二.游戏涉及知识 服务器端运用了 IO.线程.网络.面向对象.异常 的内容, 客户端使用 unity3d引擎进行开 ...

  4. 3D坦克大战游戏源码

    3D坦克大战游戏源码,该游戏是基于xcode 4.3,ios sdk 5.1开发.在xcode4.3.3上完美无报错.兼容ios4.3-ios6.0 ,一款ios平台上难得的3D坦克大战游戏源码,有2 ...

  5. unity学习3D坦克大战(六)

    Unity 3D坦克大战案列学习(五) 实现相机视野的跟随 using UnityEngine; using System.Collections; /// <summary> /// 控 ...

  6. unity学习3D坦克大战(一)

    Unity 3D坦克大战案列学习(一) 实现坦克移动和转向 using UnityEngine; using System.Collections; public class TankMovement ...

  7. unity学习3D坦克大战(四)

    Unity 3D坦克大战案列学习(四) 实现控制特效存在的时间 using UnityEngine; using System.Collections; /// <summary> /// ...

  8. unity学习3D坦克大战(五)

    Unity 3D坦克大战案列学习(五) 实现坦克的生命值和伤害机制 using UnityEngine; using System.Collections; using UnityEngine.UI; ...

  9. Unity学习回忆--3D坦克大战

    2023年LPL春季赛季后赛正在火热进行中,你们心中的总冠军是哪支队伍呢?作为热爱游戏的程序猿,一起来聊聊你那些有意义的游戏开发经历吧! 前言 还记得大一的时候第一次接触编程,为了手写一个hello, ...

  10. java 坦克大战_java课程设计之坦克大战

    本文实例为大家分享了java坦克大战的具体代码,供大家参考,具体内容如下 环境要求: 操作系统:Windows 10 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 功能提示 ...

最新文章

  1. Java学习提升体系结构
  2. Java SE和Java EE应用的性能调优
  3. 我被编程语言PUA了!用互联网黑话写代码,每天都在“赋能”变量
  4. 微信小程序/uni-app 封装请求
  5. java b kb mb gb 转换_java 上传文件大小转换为 GB/MB/KB/B
  6. Session——servlet
  7. Java jdbctemplate赋值_Spring 之 Spring JdbcTemplate的使用
  8. 云计算时代,数据中心架构三层到大二层的演变
  9. java flash截图_求大神们帮助, 如何在java中实现文字数据转换成图片或flash显示
  10. 《21天学通C#》使用.NET数据类型定义变量
  11. No package 'libxml-2.0' found
  12. bzoj_3529 数表
  13. 文件传输-FTP使用简介
  14. flex布局兼容性问题
  15. redis-trib.rb找不到
  16. 李沐动手学深度学习V2-机器翻译和数据集
  17. 按键精灵--函数的介绍
  18. criteria使用详解
  19. HackingLab的一套渗透测试题
  20. 阿里云创建及管理bucket(二)

热门文章

  1. VScode打不开浏览器方法总结
  2. 华为云,为你开启更快速的CDN加速服务!
  3. 熔断机制什么意思_熔断机制是什么意思?什么是熔断机制?
  4. Linux内核info leak漏洞
  5. 这四款Windows上的高质量软件,装机必备,使用起来极度舒适
  6. 感恩节 | Hulu Thanksgiving Potluck聚餐
  7. 基于Springboot拦截器的AES报文解密
  8. 解决PowerShell上运行脚本被禁用错误
  9. 《地球概论》(第3版)笔记 第四章 地球运动的地理意义
  10. java 检测u盘_Java简单U盘检测程序