最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Unity實現(xiàn)俄羅斯方塊(三)

 更新時間:2020年06月22日 10:24:44   作者:阿浪啊  
這篇文章主要為大家詳細(xì)介紹了Unity實現(xiàn)俄羅斯方塊的第一部分代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Unity實現(xiàn)俄羅斯方塊第3部分,供大家參考,具體內(nèi)容如下

解決穿透問題

邏輯部分

1、在物體進行移動的過程中更新格子的信息,原來的所占據(jù)的位置信息進行置空操作,現(xiàn)在所占據(jù)的格子進行賦值操作。
2、在移動后的位置進行判斷,首先移動后的位置不能是null,且不能不是移動后的物體

代碼部分

 void updateGrid()
 {
  //去除移動以前的位置信息
  for (int y = 0; y < Grid.height; y++)
  {
   for (int x = 0; x < Grid.width; x++)
   {
     //腳本是掛在物體上面的而不是是組成物體的格子上
     //如果有格子是和現(xiàn)在的位置相同那么進行置空操作
     if (Grid.grid[x, y]!= null)
     {
      if (Grid.grid[x, y].parent == transform)
      {
       Grid.grid[x, y] = null;
      }
     }
    
   }
  }
  //加入本次的更新的位置信息
  foreach (Transform child in transform)
  {
   Vector2 v = Grid.roundVec2(child.position);
   Grid.grid[(int)v.x, (int)v.y] = child;
  }
 }
  bool isValidGridPos()//判斷是否有效
 {
  foreach (Transform child in transform)
  {
   Vector2 v=Grid.roundVec2(child.position);
   //判斷是否在邊界之間
   if (!Grid.insideBorder(v))
    return false;
   //格子被占據(jù)了且不是移動后的物體就不能繼續(xù)進行移動
   if (Grid.grid[(int)v.x, (int)v.y] != null&& Grid.grid[(int)v.x, (int)v.y].parent != transform)
    return false;
  }
  return true;
 }

解決行滿后清行下移的操作

邏輯部分

1、當(dāng)其不能移動時,要判斷當(dāng)前游戲頁面哪一行是滿的,并且刪除該行
2、當(dāng)刪除完這一行以后,要把這行上面的所有方塊進行下落操作,如果這一行滿了,先進行刪除,并將上方的整體方塊下移,在檢查這一行,直至這一行不能進行刪除,再檢查上一行。

代碼部分

//判斷某一行是否是滿的


public static bool isRowFull(int y) {
  for (int x = 0; x < width; x++)
  {
   //該行中只要有一個是空的,那么這一行就不滿
   if (grid[x, y] == null)
    return false;
  }
  return true;
 }
 //刪除某一行的所有數(shù)據(jù)
 public static void deleteRow(int y) {
  for (int x = 0; x < width; x++)
  {
   //將該行的元素進行刪除
   Destroy(grid[x, y].gameObject);
   //將網(wǎng)格置為空
   grid[x, y] = null;
  }
 }
 //刪除滿了的所有行
 public static void deleteFullRows() {
  for (int y = 0; y < height; )
  {
   if (isRowFull(y))
   {
    deleteRow(y);
    GUIManager.score += 5;
    decreaseRowAbove(y + 1);
   }
   else y++;
  }
 }
 //下降一整行
 public static void decreaseRow(int y) {
  //復(fù)制該行數(shù)據(jù)到下一行
  //清空該行的數(shù)據(jù)
  //視覺上改變原來方塊的位置
  for (int x = 0; x < width; x++) {
   if (grid[x, y] != null)
   {
    grid[x, y - 1] = grid[x, y];
    grid[x,y].position += new Vector3(0,-1,0);
    grid[x, y] = null;

   }
  }
 }
 //從指定的行數(shù)開始檢查,將該行以及該行以上的數(shù)據(jù)往下移
 public static void decreaseRowAbove(int y) {
  for (int i = y; i < height; i++)
  {
   decreaseRow(i);
  }
 }

設(shè)置成績

邏輯部分

當(dāng)每消除一行,成績加5分。

代碼部分

public Text Score;//用于綁定成績的文本組件,好對文本的內(nèi)容進行修改
public static int score = 0;
 void Start()
 {
  //對大小寫敏感
  timer = GameObject.Find("Canvas/Timer").GetComponent<Text>();
  Score = GameObject.Find("Canvas/Score").GetComponent<Text>();
  //得到游戲開始時間(單位:s)
  startTime = Time.time;
 }

 // Update is called once per frame
 void Update()
 {
  //游戲運行了多長時間(單位:s)
  time=Time.time - startTime;
  //秒數(shù)
  int seconds=(int)time % 60;
  //分?jǐn)?shù)
  int minutes = (int)time / 60;
  //其中:前面的0 1指的是第幾個參數(shù) :后面00表示由幾位組成 {}之間的:是要顯示出來的
  string strTime = string.Format("{0:00}:{1:00}",minutes,seconds);
  timer.text = strTime;
  Score.text = score.ToString();
 }

更多俄羅斯方塊精彩文章請點擊專題:俄羅斯方塊游戲集合 進行學(xué)習(xí)。

更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:

C++經(jīng)典小游戲匯總

python經(jīng)典小游戲匯總

python俄羅斯方塊游戲集合

JavaScript經(jīng)典游戲 玩不停

javascript經(jīng)典小游戲匯總

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • linux操作系統(tǒng)安裝MONO執(zhí)行C#程序的詳解步驟

    linux操作系統(tǒng)安裝MONO執(zhí)行C#程序的詳解步驟

    這篇文章主要介紹了linux操作系統(tǒng)安裝MONO執(zhí)行C#程序詳解步驟,有需要的可以參考一下
    2013-12-12
  • C#使用iTextSharp添加PDF水印

    C#使用iTextSharp添加PDF水印

    這篇文章主要為大家詳細(xì)介紹了C#使用iTextSharp添加PDF水印的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 談C# using的用法與好處

    談C# using的用法與好處

    這篇文章主要為大家詳細(xì)介紹了C# using的用法與好處,具體分析了using指令調(diào)用的Dispose()方法,感興趣的朋友可以參考一下
    2016-05-05
  • WPF輕松實現(xiàn)進度條的示例代碼

    WPF輕松實現(xiàn)進度條的示例代碼

    WPF中的ProgressBar控件用于表示任務(wù)進度,適用于文件下載、數(shù)據(jù)處理等場景,本文將通過XAML和C#代碼展示如何創(chuàng)建一個基本的WPF進度條,并演示如何通過事件處理程序更新進度條的值來模擬耗時操作,感興趣的小伙伴跟著小編一起來看看吧
    2024-12-12
  • Unity實現(xiàn)物體沿自身的任意軸向旋轉(zhuǎn)

    Unity實現(xiàn)物體沿自身的任意軸向旋轉(zhuǎn)

    這篇文章主要為大家詳細(xì)介紹了Unity實現(xiàn)物體沿自身的任意軸向旋轉(zhuǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • c#實現(xiàn)16進制和字符串之間轉(zhuǎn)換的代碼

    c#實現(xiàn)16進制和字符串之間轉(zhuǎn)換的代碼

    #中十六進制字符串的轉(zhuǎn)換函數(shù)
    2007-05-05
  • C#中類的異常處理詳解

    C#中類的異常處理詳解

    大家好,本篇文章主要講的是C#中類的異常處理詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • VB.NET中TextBox的智能感知應(yīng)用實例

    VB.NET中TextBox的智能感知應(yīng)用實例

    這篇文章主要介紹了VB.NET中TextBox的智能感知應(yīng)用實例,非常實用的功能,需要的朋友可以參考下
    2014-08-08
  • .NET 某云采購平臺API 掛死問題解析

    .NET 某云采購平臺API 掛死問題解析

    這篇文章主要介紹了.NET 某云采購平臺API 掛死問題解析,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • C#設(shè)計模式實現(xiàn)之迭代器模式

    C#設(shè)計模式實現(xiàn)之迭代器模式

    迭代器模式把對象的職責(zé)分離,職責(zé)分離可以最大限度減少彼此之間的耦合程度,從而建立一個松耦合的對象,這篇文章主要給大家介紹了關(guān)于C#設(shè)計模式實現(xiàn)之迭代器模式的相關(guān)資料,需要的朋友可以參考下
    2021-08-08

最新評論

开化县| 旌德县| 乌什县| 淳化县| 临澧县| 通渭县| 和平县| 陈巴尔虎旗| 昂仁县| 蓬安县| 应城市| 陆丰市| 波密县| 久治县| 怀安县| 广元市| 菏泽市| 尉氏县| 平邑县| 清远市| 温宿县| 安仁县| 宣武区| 京山县| 定边县| 宁津县| 公安县| 新巴尔虎右旗| 绍兴市| 巴东县| 黄陵县| 霍山县| 莒南县| 南京市| 长春市| 阿拉尔市| 三台县| 夏津县| 福海县| 旌德县| 泰来县|