[原创]unity教程之2048游戏03

    xiaoxiao2025-10-14  2

    前面讲完了,游戏一开始生成两个方块在随机的位置(而且是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 (int x=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);//这个函数就起作用了,方块进行移动的动画了             GameObject tempOb;             tempOb=go[x];             go[x]=null;             go[index]=tempOb;                               }                         } else {                               if (tempNum == numArray [x]) {                                     ///合并,这个稍后方块代码,应该是整个2048最主要,也是比较难理解的逻辑了。                                                                       }                                                                   } else {                                                                         tempNum = numArray [x];                                     inDex--;                                                                         if (numArray [x+1] == 0) {                                                                             numArray[x]=0;             numArray[index]=tempNum;             go[x].GetComponent().changePos(index);//这个函数就起作用了,方块进行移动的动画了             GameObject tempOb;             tempOb=go[x];             go[x]=null;             go[index]=tempOb;                                     }                               }                                                       }                                                                   }                                                 } 4,//合并的代码// if (tempNum == numArray [x]) {                                     ///合并                                     int tmNum=tempNum*2;                                     tempNum=0;                                     numArray [x] = 0;                                     numArray [inDex] = tmNum;                                     go [x].GetComponent ().needsetz = true;                                     go [x].GetComponent ().changePos (inDex);                                     //这里需要延迟执行                                     Destroy (go [x].gameObject, 0.2f);                                     go [x] = null;                                     //进行合并,消失                                     for (int i=x+1; i<4; i++) {                                           if (numArray [i] == 0)                                                 continue;                                           changeNumandColor (i,tmNum);                                                                                     break;                                     }                                     结束。逻辑部分还是要靠自己理解吧。
    转载请注明原文地址: https://ju.6miu.com/read-1303151.html
    最新回复(0)