控制坦克的移动

坦克的移动一般来讲有两个角色
实现两个角色控制需要设置不同的按键

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("开火");}}

关于坦克大战的简单移动以及子弹发射相关推荐

  1. JAVA写的坦克大战(简单)

    package _25增加配置文件;import java.awt.*; import java.awt.event.*; import java.util.List;import java.util ...

  2. 基于Netty的联机版坦克大战

    基于Netty的联机版坦克大战 项目介绍 项目github地址:基于Netty的联机版坦克大战 该项目实现了联机版坦克大战,项目包括客户端与服务端 项目使用技术: 使用Netty实现客户端和服务端之间 ...

  3. Unity3d 机试题目 坦克大战总结

    面试的时候,先是正常的面试,然后是笔试,最后是机试.算好一切准备得还算完善,就是机试题目坦克大战,里面会有几个要点老是忘记.在这里首先要郑重感谢我不知道在哪里看到的博客以及他的作者,正好解决了我的疑惑 ...

  4. Java课程设计——坦克大战

    坦克大战--坦克类 一. 团队课程设计博客链接 https://www.cnblogs.com/chenhuilin/p/10275664.html 二.个人负责模块和任务说明 模块:坦克类(玩家坦克 ...

  5. 坦克大战java_Java课程设计——坦克大战

    坦克大战--坦克类 一. 团队课程设计博客链接 二.个人负责模块和任务说明 模块:坦克类(玩家坦克类+电脑坦克类),代码整合 三.代码的提交记录截图 四.负责模块和任务详细说明 玩家坦克继承Visib ...

  6. java坦克大战互相碰撞_Java课程设计——坦克大战

    坦克大战--坦克类 一. 团队课程设计博客链接 二.个人负责模块和任务说明 模块:坦克类(玩家坦克类+电脑坦克类),代码整合 三.代码的提交记录截图 四.负责模块和任务详细说明 玩家坦克继承Visib ...

  7. python坦克大战游戏_python实现简单坦克大战

    基于对面向对象编程的思想完成简单的坦克大战游戏.主要目的锻炼面相对象编程思想 同样的在使用python进行游戏编写时需要安装pygame模块 安装方法: pycharm安装方式:File --> ...

  8. 基于C++如何使用EGE做一个简单的坦克大战游戏

    作为一个C语言刚入门的小萌新,学完C语言基础语法后就迫不及待想要自己做一个游戏出来了,然后想到了小时候插卡玩的坦克大战,于是做了一个黑框框版的简单坦克大战,后面学了一点EGE图形库就在黑框框版的坦克大 ...

  9. Unity3D项目十:简单坦克大战

    简单坦克大战 作业要求 坦克对战游戏 AI 设计 从商店下载游戏:"Kawaii" Tank 或 其他坦克模型,构建 AI 对战坦克.具体要求 使用"感知-思考-行为&q ...

最新文章

  1. java设计模式1--工厂方法模式(Factory Method)
  2. Linux 需要的常用操作,你只差这篇文章
  3. org.springframework.dao.InvalidDataAccessApiUsageException: Write operations
  4. 循环基础-程序计数从0开始
  5. 史上最全的 MySQL 高性能优化实战总结
  6. oracle Blob保存方式,关于文件保存到Oracle中BLOB字段的方法及例子
  7. android高仿天天动听,Android仿天天动听歌曲自动滚动view
  8. 获得手机屏幕相关参数
  9. 关闭保护火狐浏览器的保护与多余的加载项
  10. Web API的CORS
  11. 使用Hibernate SQLQuery(转)
  12. UE4官网关于GamePlay框架的介绍
  13. ThreeJS 跨域
  14. 短信下发的成功失败概率是多少?如何提高到达率?
  15. Jeston NX ubuntu 搜狗拼音输入法安装
  16. EMCP 物联网云平台短信报警使用说明
  17. FreeRTOS任务切换过程深层解析
  18. Canvas 实用API详解
  19. 利用向量积(叉积)计算三角形(多边形)的面积
  20. 树莓派linux led字符设备驱动(原子操作)

热门文章

  1. 基因数据处理37之bdg-formats编译成功
  2. 前端性能优化(三)performance
  3. 国产手机体验qq全部功能
  4. 2006年最经典精品语录!!
  5. 除了走路,40-60岁的人,还可以进行哪些运动?3种运动可供参考
  6. 礼物帮手App项目(1)-环境搭建
  7. 从word中复制图片到tinymce编辑器中
  8. UEFI开发探索34 – Option ROM前传1
  9. 基于HAL库的rs232modbus主机
  10. mac 自带Safari浏览器 页面卡死 不动