700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【95】太空射击游戏——玩家代码

【95】太空射击游戏——玩家代码

时间:2020-02-18 18:15:58

相关推荐

【95】太空射击游戏——玩家代码

using UnityEngine;using System.Collections;using System.Collections.Generic;/// <summary>/// _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;}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。