先上代码:
public float m_speed = 1;
void update()
{
float movev = 0;
float moveh = 0;
if(Input.GetKey(KeyCode.UpArrow))
{
movev -=m_speed*Time.deltaTime;
}
if(Input.GetKey(KeyCode.RightArrow))
{
moveh -=m_speed*Time.deltaTime;
}
this.transform.Translate(new Vector3(moveh,0,movev));
}
我们通过以上的代码,进行简单的向上和向右的移动。
移动速度/方向位移
因为要完成的是移动操作,所以我们最初设定了一个float作为速度:
public float m_speed = 1;
float movev = 0;
float moveh = 0;
m_ :在一些变量声明前加入m_,意思是类里的成员变量,在这里填入m_的变量,在面板内m_会被自动忽略。这是c#的一些编译习惯,通常也作为规范编程,这个属于“没必要,但通常要加”的。
紧接着,我们加入了两个float变量,作为每次变化,物体所进行的位移向量。
获取键盘按键
Input.GetKey(KeyCode.UpArrow)
Input.GetKey:获取正在按下的键盘按钮。
当然,input除了GetKey之外,还有很多方法,如:
GetKey-在按下的过程中返回值-大多数使用
GetKeyDown-在按下的第一帧返回值-如一次特殊攻击后转为普通攻击
GetKeyUp-在按下的最后一帧返回值-如蓄力攻击的最后一帧
按下按键后移动
movev -=m_speed*Time.deltaTime;
位移 -= 速度 * 以秒来计算的速度
Time.deltaTime :以秒来计算,如以每秒10米的速度而不是每帧10米的速度
秒和帧不懂的请自行百度
平移过程
this.transform.Translate(new Vector3(moveh,0,movev));
this:此控件/物体
transform.Translate:平移,简单来说,就是向某方向移动物体,具体有多种用法,在此处,意思是以向量vector3(moveh,0,movev)前进
Vector3:创建一个新的具有给定x, y, z组件的向量。