2.5.2 控制飞船移动
来源:互联网 发布:微信小号矩阵 编辑:程序博客网 时间:2024/04/29 14:03
using UnityEngine;using System.Collections;[AddComponentMenu("MyGame/Player")] // 为了便于管理脚本,自定义脚本在菜单栏中的位置 public class Player : MonoBehaviour { // 速度 public float m_speed = 1;
</pre><pre name="code" class="cpp"> // Update is called once per frame void Update () { // 纵向移动距离 float movev = 0; // 水平移动距离 float moveh = 0; // 按上键 if(Input.GetKey(KeyCode.UpArrow)) { //movev = movev - m_speed * Time.deltaTime; movev -= m_speed * Time.deltaTime; } // 按下键 if(Input.GetKey(KeyCode.DownArrow)) { movev += m_speed * Time.deltaTime; } // 按左键 if(Input.GetKey(KeyCode.LeftArrow)) { moveh += m_speed * Time.deltaTime; } // 按右键 if(Input.GetKey(KeyCode.RightArrow)) { moveh -= m_speed * Time.deltaTime; }
// 移动 this.transform.Translate(new Vector3(moveh, 0, movev));
}
}
Input是一个包装了输入功能的类,它包括了所有的键盘、鼠标或者触控操作函数。
Time.deltaTime 表示每帧的经过时间,那些需要每帧做增减变动的数值都需要乘上Time.deltaTime。
this.transform 调用的是游戏体的Transform组件,Transform 组件提供的主要功能是和移动、旋转、缩放游戏体有关的。Translate函数移动游戏体,其中
Vector3类型的参数,用x,y,z三个方向上的移动距离。
实战方法:
Update函数中每帧都去调用this.transform组件,会造成一定的效率问题,我们可以在对象初始化时候只调用一次并且将其保存起来。
注意: MonoNBehaviour 的派生类不能使用构造函数初始化。
using UnityEngine;using System.Collections;[AddComponentMenu("MyGame/Player")] // 为了便于管理脚本,自定义脚本在菜单栏中的位置 public class Player : MonoBehaviour { // 速度 public float m_speed = 1;
</pre><pre name="code" class="cpp"> <span style="white-space:pre"> protected Transform m_transform;</span>
</pre><pre name="code" class="cpp"> // Use this for initialization void Start () {<span style="white-space:pre"></span>// Debug.Log ("sjt"); m_transform = this.transform; }
<span style="white-space:pre"></span><pre name="code" class="cpp"><span style="white-space:pre"></span>// Update is called once per frame void Update () {<span></span> // 纵向移动距离 float movev = 0; // 水平移动距离 float moveh = 0; // 按上键 if(Input.GetKey(KeyCode.UpArrow)) { //movev = movev - m_speed * Time.deltaTime; movev -= m_speed * Time.deltaTime; } // 按下键 if(Input.GetKey(KeyCode.DownArrow)) { movev += m_speed * Time.deltaTime; } // 按左键 if(Input.GetKey(KeyCode.LeftArrow)) { moveh += m_speed * Time.deltaTime; } // 按右键 if(Input.GetKey(KeyCode.RightArrow)) { moveh -= m_speed * Time.deltaTime; }
// 移动 // this.transform.Translate(new Vector3(moveh, 0, movev));
this.m_transform.Translate(new Vector3(moveh, 0, movev));
// 这样程序就不用每帧去查找Transform组件,提高效率。
}}
</pre><pre name="code" class="cpp">
0 0
- 2.5.2 控制飞船移动
- 【TomoEngine】 第二讲 太空遨游(二)飞船全方位控制
- 鼠标控制移动2d角色
- Space Shooter之飞船的运动、边界控制和运动旋转
- “神七”2年前确定为载人飞船dambolo
- 2013-2-22 ACM-第三次月赛 1005 BT飞船
- 戴夫号飞船
- 飞船赛
- 飞船汇合
- 飞船赛
- 方向键控制移动移动.cpp
- 移动Oracle控制文件
- js控制菜单移动
- 鼠标移动控制代码
- 控制飞机的移动
- oracle移动控制文件
- 控制控件上下左右移动
- javascript控制光标移动
- Android在onCreate或者在Fragment的onCreateView中获取控件、屏幕的宽高
- SQLLDR示例
- CorpAct抽样模板
- UIApplication sharedApplication 的常用使用方法
- 页面缓存
- 2.5.2 控制飞船移动
- Machine Learning Foundations 第13节-第16节
- android内存泄露优化总结
- 深入理解HTTP Session(2)
- poj 2139 Floyd-Warshall算法求最短路
- codevs1049
- AsyncTask的学习
- DevComponents.DotNetBar2显示控件的方法
- Hibernate注解法一对多时,赖加载问题