using UnityEngine;
using System.Collections;
using System.Collections.Generic;
/// <summary>
/// 2014_3_26 修改
/// </summary>
[AddComponentMenu("MyGame/PlayerBase")]
public class PlayerBase : MonoBehaviour {//飞机控制开关public bool _isActive=true;//飞机的速度
    [SerializeField]private float _speed=10;//飞机移动的方向public enum eDirection { X, Y, Z };public eDirection _direction = eDirection.X;//飞机位置的限制
    [SerializeField]private float _limit_min_V=-10;[SerializeField]private float _limit_max_V=10;[SerializeField]private float _limit_min_H=-10;[SerializeField]private float _limit_max_H=10;//飞机位移的数值private float _V=0;private float _H = 0;//飞机的血值//飞机的位置private Transform _playerTransform;//子弹
    [SerializeField]private GameObject _rocketObj;private float _rocketRate = 0;//用于子弹发射的频率private RocketBase _rocketBase;//子弹发射的位置 我希望设置多个子弹发射的位置 不同的子弹会从不同的位置发射出来
    [SerializeField]private List<Transform> _listTransform = new List<Transform>();private Dictionary<string,Transform> _rocketInstanPosition=new Dictionary<string,Transform>();void Start() {_playerTransform = this.transform;//找到子弹的代码_rocketBase = _rocketObj.GetComponent<RocketBase>();//获取子弹的发射频率_rocketRate = _rocketBase._rate;//定义子弹加载的位置_rocketInstanPosition.Add("Top", _listTransform[0]);_rocketInstanPosition.Add("Left", _listTransform[1]);_rocketInstanPosition.Add("Right", _listTransform[2]);_rocketInstanPosition.Add("Bottom", _listTransform[3]);}void Update() {if (_isActive){onPlaneAnim();}}void onPlaneAnim() {//获取键盘的位移信息_V = Input.GetAxis("Horizontal") * _speed * Time.deltaTime;_V = onLimit(_V, _limit_min_V, _limit_max_V);_H = Input.GetAxis("Vertical") * _speed * Time.deltaTime;_H = onLimit(_H, _limit_min_H, _limit_max_H);//控制飞机移动switch (_direction){case eDirection.X:this._playerTransform.Translate(new Vector3(_V, 0, _H));//position 和Translate的区别,position会受到父级的缩放影响this._playerTransform.position = new Vector3(onLimit(this._playerTransform.position.x, _limit_min_V, _limit_max_V), this._playerTransform.position.y, onLimit(this._playerTransform.position.z, _limit_min_V, _limit_max_V));break;case eDirection.Y:this._playerTransform.Translate(new Vector3(_V, _H, 0));//position 和Translate的区别,position会受到父级的缩放影响this._playerTransform.position = new Vector3(onLimit(this._playerTransform.position.x, _limit_min_V, _limit_max_V), onLimit(this._playerTransform.position.y, _limit_min_V, _limit_max_V), this._playerTransform.position.z);break;case eDirection.Z:this._playerTransform.Translate(new Vector3(0, _V, _H));//position 和Translate的区别,position会受到父级的缩放影响this._playerTransform.position = new Vector3(this._playerTransform.position.x, onLimit(this._playerTransform.position.y, _limit_min_V, _limit_max_V), onLimit(this._playerTransform.position.z, _limit_min_V, _limit_max_V));break;}if (Input.GetKey(KeyCode.Space)){_rocketRate -= Time.deltaTime;if (_rocketRate < 0) {_rocketRate = _rocketBase._rate;onInstantiate();}}}float onLimit(float _num,float _min,float _max) {if (_num < _min) {_num = _min;}else if (_num > _max) {_num = _max;}return _num;}void onInstantiate() {switch (_rocketBase._planeT) {case RocketBase.PlaneTransform.Top:Instantiate(_rocketObj, _rocketInstanPosition["Top"].transform.position, _rocketInstanPosition["Top"].transform.rotation);break;case RocketBase.PlaneTransform.Left_Right:Instantiate(_rocketObj, _rocketInstanPosition["Left"].transform.position, _rocketInstanPosition["Left"].transform.rotation);Instantiate(_rocketObj, _rocketInstanPosition["Right"].transform.position, _rocketInstanPosition["Right"].transform.rotation);break;case RocketBase.PlaneTransform.Bottom:Instantiate(_rocketObj, _rocketInstanPosition["Bottom"].transform.position, _rocketInstanPosition["Bottom"].transform.rotation);break;}}
}

转载于:https://www.cnblogs.com/sy88/p/3624654.html

【95】太空射击游戏——玩家代码相关推荐

  1. 发个2D太空射击游戏代码

    很久前写的一个 2D 太空射击游戏,使用的是 DirectX 库和 C++ 开发. 现在看来程序结构虽不算合理,但是里面基本包括了一个 2D 太空射击游戏的基本元素:卷屏,碰撞检测,不同类型的敌人和 ...

  2. iOS游戏开发之使用 Spritekit 框架和 Swift 的 iOS 2D 太空射击游戏(教程含源码)

    实战需求 使用 Spritekit 框架和 Swift 的 iOS 2D 太空射击游戏 本文价值与收获 看完本文后,您将能够作出下面的界面 实战代码 1.主界面 import SpriteKit im ...

  3. mac太空射击游戏:Nova Drift (新星漂移)中文版

    Nova Drift是一款激动人心的太空射击游戏. Nova Drift Mac整合了现代独立游戏风格和游戏历史上最深的根源.它不仅具有时尚和性感的外观,而且具有平稳的控制功能.玩家控制着一艘不断开发 ...

  4. 【githubshare】基于 C 语言编写的一款 2D 太空射击游戏,已在 Windows 10 和 Ubuntu Linux 16.04 系统上跑通测试

    基于 C 语言编写的一款 2D 太空射击游戏:space-shooter.c,已在 Windows 10 和 Ubuntu Linux 16.04 系统上跑通测试. GitHub:github.com ...

  5. python3.7.4游戏代码,Python3+Pygame实现射击游戏完整代码

    之前看到过很多人写的飞机大战,当然了之前我也写过多个版本,总体来说功能是实现了,但总感觉不够"炫" 今天浏览Python资料的时候,意外发现了这个很好的"射击" ...

  6. Java Swing打猎射击游戏编程代码下载

    代码下载地址:http://www.zuidaima.com/share/1858069987494912.htm 原文:Java Swing打猎射击游戏编程代码下载 这是一款java swing编写 ...

  7. 对 Unity 太空射击游戏的实践

    写在前面 # 本次 Space Shooter 实践通过实现以下功能达到加深对 U3D 游戏开发的认知. 键盘控制飞船移动; 发射子弹设计目标; 随机生成大量障碍物; 计分; 实现游戏对象的生命周期管 ...

  8. unity官方教程 太空射击---问题填坑 之 计分以及游戏胜利

    (本文仅供自己参考,文中代码可能有误,毕竟手打没有VS的帮助,请仅供理解,切莫复制粘贴)原来的代码还是不理解为什么,但现在有了新的方法,前排提醒,一下方法会与官方教程出现巨大误差,请理解后使用 首先我 ...

  9. 太空射击第11课: Sound and Music

    Sound and Music 在本课中,我们将为游戏添加音效和音乐.在这里可以下载太空射击游戏素材 视频 您可以在此处观看本课程的视频: 声音的力量 良好的音频是为游戏添加"果汁" ...

  10. fastreport 打印有 demo version字样_PC太空射击《永恒空间2》免费Demo版推出!支持简中...

    德国的独立开发商ROCKFISH Games旗下太空射击游戏<永恒空间2(Everspace2)>的Demo版现已推出. 本作是2017年5月发售的以宇宙空间为舞台伴随着Rogue-lik ...

最新文章

  1. 模拟出ios中流行的黑色背景底
  2. StoryBoard布局注意事项
  3. Flutter开发之布局-2-row(16)
  4. tensorflow 添加官方代码--以leaky_relu为例
  5. mysql查询特定时间数据视频_mysql查询特定时间段内的数据
  6. C++ Primer 5th笔记(chap 15 OOP)继承中的类作用域
  7. MyEclipse8 GA 下载地址 注册码 优化指南
  8. MySQL中的find_in_set
  9. 大型网站技术架构(读书笔记)
  10. LOL暗影岛服务器维修,LOL各大区服务器的地点
  11. 若w=1,x=2,y=3,z=4,则条件表达式wx?w : zy?z : x的结果为 4
  12. 服务器安全防护措施有哪些?
  13. Android获取外网ip
  14. C1. Skyscrapers (从easy到hard)
  15. 第13届蓝桥杯赛后感想
  16. Stop worrying and start living
  17. 智慧水务大数据平台-智慧水务建设方案
  18. 有关林达华的几个地址
  19. 利用栈进行数制转换和括号匹配(C语言)
  20. 清晰明了,什么是贝叶斯定理?朴素贝叶斯又是什么?

热门文章

  1. php微信客服接口,微信公众平台开发:多客服接口说明
  2. 如何处理微信域名防封
  3. 简单抽样技术——样本均值是总体均值的无偏估计
  4. 消息队列(MQ) 企业服务总线(ESB)
  5. 校招经历-java开发面试题
  6. Android项目编码规范
  7. java 日程表_递归与分治策略之循环赛日程表Java实现
  8. Control-M 调度工具
  9. npm install 时报错:npm WARN vueproject@1.0.0 No repository field.(缺少repository字段)
  10. Java实现文件管理系统(附带源码)