[原创]unity教程之2048游戏03
来源:互联网 发布:消防大数据平台 编辑:程序博客网 时间:2024/06/18 10:23
前面讲完了,游戏一开始生成两个方块在随机的位置(而且是2和4的随机数字)。
那么完成了随机生成方块,现在要实现移动方块了。按键上下左右(wsad)来移动方块。
1,前面的第6点已经给出方块的完整的代码了,这里把思路讲讲。
1-1,首先是newPos = transform.position;,这里newPos就是我们用来控制移动的
void Update () {
transform.position=Vector3.MoveTowards(transform.position,newPos,25.0f);
}
当newPos改变的时候,方块就朝newPos的位置移动。
1-2,那么怎么改变newPos呢,或者说什么样的情况下改变呢,我们通过建立changePos()这里函数来改变,带有参数的,到时候要用到
public void changePos(int temIndex){
newPos.x = -132f + temIndex *88f;//这个是根据实际图片的尺寸知道的,当temIndex等于0的时候,
//,也就是newPos.x=-132f,所以这个方块的位置是[0]
if(needsetz){
newPos.z = 1;//这个是让他显示在上层,作用不大
needsetz=false;
}
2,好了,回到public class gmmanager : MonoBehaviour {。
建立这么一个函数
private void MoveNum(){
if (Input.GetKey (KeyCode.W)) {
return;
}
if(Input.GetKey (KeyCode.S)) {
return;
}
if(Input.GetKeyDown (KeyCode.A)) {
return;
}
if (Input.GetKeyDown (KeyCode.D)) {}
}
3,然后我们在if (Input.GetKeyDown (KeyCode.D)) {里面做点事情,当你点击d按键的时候
int tempNum = 0;
int inDex =4;
for (intx=3; x>=0; x--) {
if (numArray[x] == 0)//第一,先判断是不是0空的
continue;
if (tempNum== 0) {//第二,这个用来进行相等的判断,一般只进入一次
tempNum =numArray [x];
inDex--;
//第一次有物体,有移动的话,值要进行互换了,并且要移动了
if (x != 3){
numArray[x]=0;
numArray[index]=tempNum;
go[x].GetComponent().changePos(index);//这个函数就起作用了,方块进行移动的动画了
GameObjecttempOb;
tempOb=go[x];
go[x]=null;
go[index]=tempOb;
}
1,前面的第6点已经给出方块的完整的代码了,这里把思路讲讲。
当newPos改变的时候,方块就朝newPos的位置移动。
//,也就是newPos.x=-132f,所以这个方块的位置是[0]
private void MoveNum(){
if (Input.GetKey (KeyCode.W)) {
return;
}
if (Input.GetKeyDown (KeyCode.D)) {}
}
3,然后我们在if (Input.GetKeyDown (KeyCode.D)) {里面做点事情,当你点击d按键的时候