关于坦克大战的简单移动以及子弹发射
控制坦克的移动
坦克的移动一般来讲有两个角色
实现两个角色控制需要设置不同的按键
public int m_PlayerNumber = 1; //小坦克一号,便于之后按键的控制
public float m_Speed = 12f;//移动速度 public float m_TurnSpeed = 180f; //旋转速度public AudioSource m_MovementAudio; public AudioClip m_EngineIdling; public AudioClip m_EngineDriving; public float m_PitchRange = 0.2f;//控制声音变化private string m_MovementAxisName; private string m_TurnAxisName; private Rigidbody m_Rigidbody; private float m_MovementInputValue; private float m_TurnInputValue; private float m_OriginalPitch; private void Awake(){m_Rigidbody = GetComponent<Rigidbody>();//获取刚体}private void OnEnable (){m_Rigidbody.isKinematic = false;m_MovementInputValue = 0f;m_TurnInputValue = 0f;}private void OnDisable (){m_Rigidbody.isKinematic = true;}private void Start(){m_MovementAxisName = "Vertical" + m_PlayerNumber;//小坦克按键问题m_TurnAxisName = "Horizontal" + m_PlayerNumber;m_OriginalPitch = m_MovementAudio.pitch;}private void Update(){// Store the player's input and make sure the audio for the engine is playing.m_MovementInputValue = Input.GetAxis(m_MovementAxisName);m_TurnInputValue = Input.GetAxis(m_TurnAxisName);EngineAudio();}private void EngineAudio(){// Play the correct audio clip based on whether or not the tank is moving and what audio is currently playing.if (Mathf.Abs(m_MovementInputValue) < 0.1f && (m_TurnInputValue) < 0.1f){if (m_MovementAudio.clip == m_EngineDriving){m_MovementAudio.clip = m_EngineIdling;m_MovementAudio.pitch = Random.Range(m_OriginalPitch - m_PitchRange, m_OriginalPitch + m_PitchRange);m_MovementAudio.Play();}}else {if (m_MovementAudio.clip == m_EngineIdling ){m_MovementAudio.clip = m_EngineDriving ;m_MovementAudio.pitch = Random.Range(m_OriginalPitch - m_PitchRange, m_OriginalPitch + m_PitchRange);m_MovementAudio.Play();}}}private void FixedUpdate(){// Move and turn the tank.Move();Turn();}private void Move(){// Adjust the position of the tank based on the player's input.Vector3 movement = transform.forward * m_MovementInputValue * m_Speed * Time.deltaTime;m_Rigidbody.MovePosition(m_Rigidbody.position + movement);}private void Turn(){// Adjust the rotation of the tank based on the player's input.float turn = m_TurnInputValue * m_TurnSpeed * Time.deltaTime;Quaternion turnRotation = Quaternion.Euler(0f, turn, 0f);m_Rigidbody.MoveRotation(m_Rigidbody.rotation * turnRotation);}
}
然后就是发射子弹简单的就是生成子弹,给子弹个速度
public GameObject bullten;public float firespeed = 50;public Transform firepos; // Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){if (Input.GetMouseButtonDown(0)) {GameObject go = GameObject.Instantiate(bullten , firepos.position, firepos.rotation) ;go.GetComponent<Rigidbody>().velocity = go.transform.forward * firespeed;Debug.Log("开火");}}
关于坦克大战的简单移动以及子弹发射相关推荐
- JAVA写的坦克大战(简单)
package _25增加配置文件;import java.awt.*; import java.awt.event.*; import java.util.List;import java.util ...
- 基于Netty的联机版坦克大战
基于Netty的联机版坦克大战 项目介绍 项目github地址:基于Netty的联机版坦克大战 该项目实现了联机版坦克大战,项目包括客户端与服务端 项目使用技术: 使用Netty实现客户端和服务端之间 ...
- Unity3d 机试题目 坦克大战总结
面试的时候,先是正常的面试,然后是笔试,最后是机试.算好一切准备得还算完善,就是机试题目坦克大战,里面会有几个要点老是忘记.在这里首先要郑重感谢我不知道在哪里看到的博客以及他的作者,正好解决了我的疑惑 ...
- Java课程设计——坦克大战
坦克大战--坦克类 一. 团队课程设计博客链接 https://www.cnblogs.com/chenhuilin/p/10275664.html 二.个人负责模块和任务说明 模块:坦克类(玩家坦克 ...
- 坦克大战java_Java课程设计——坦克大战
坦克大战--坦克类 一. 团队课程设计博客链接 二.个人负责模块和任务说明 模块:坦克类(玩家坦克类+电脑坦克类),代码整合 三.代码的提交记录截图 四.负责模块和任务详细说明 玩家坦克继承Visib ...
- java坦克大战互相碰撞_Java课程设计——坦克大战
坦克大战--坦克类 一. 团队课程设计博客链接 二.个人负责模块和任务说明 模块:坦克类(玩家坦克类+电脑坦克类),代码整合 三.代码的提交记录截图 四.负责模块和任务详细说明 玩家坦克继承Visib ...
- python坦克大战游戏_python实现简单坦克大战
基于对面向对象编程的思想完成简单的坦克大战游戏.主要目的锻炼面相对象编程思想 同样的在使用python进行游戏编写时需要安装pygame模块 安装方法: pycharm安装方式:File --> ...
- 基于C++如何使用EGE做一个简单的坦克大战游戏
作为一个C语言刚入门的小萌新,学完C语言基础语法后就迫不及待想要自己做一个游戏出来了,然后想到了小时候插卡玩的坦克大战,于是做了一个黑框框版的简单坦克大战,后面学了一点EGE图形库就在黑框框版的坦克大 ...
- Unity3D项目十:简单坦克大战
简单坦克大战 作业要求 坦克对战游戏 AI 设计 从商店下载游戏:"Kawaii" Tank 或 其他坦克模型,构建 AI 对战坦克.具体要求 使用"感知-思考-行为&q ...
最新文章
- java设计模式1--工厂方法模式(Factory Method)
- Linux 需要的常用操作,你只差这篇文章
- org.springframework.dao.InvalidDataAccessApiUsageException: Write operations
- 循环基础-程序计数从0开始
- 史上最全的 MySQL 高性能优化实战总结
- oracle Blob保存方式,关于文件保存到Oracle中BLOB字段的方法及例子
- android高仿天天动听,Android仿天天动听歌曲自动滚动view
- 获得手机屏幕相关参数
- 关闭保护火狐浏览器的保护与多余的加载项
- Web API的CORS
- 使用Hibernate SQLQuery(转)
- UE4官网关于GamePlay框架的介绍
- ThreeJS 跨域
- 短信下发的成功失败概率是多少?如何提高到达率?
- Jeston NX ubuntu 搜狗拼音输入法安装
- EMCP 物联网云平台短信报警使用说明
- FreeRTOS任务切换过程深层解析
- Canvas 实用API详解
- 利用向量积(叉积)计算三角形(多边形)的面积
- 树莓派linux led字符设备驱动(原子操作)