亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

unity使用鏈表實現(xiàn)貪吃蛇游戲

 更新時間:2020年04月16日 12:25:52   作者:丟丟思密達(dá)  
這篇文章主要為大家詳細(xì)介紹了unity使用鏈表實現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

今天介紹一下如何利用鏈表結(jié)構(gòu)來創(chuàng)建一條貪吃蛇。

要實現(xiàn)的功能很簡單,按下空格鍵使蛇加長一節(jié),每次按下空格就在蛇尾加一個cube。按下左方向鍵,控制蛇的移動。如圖所示:

//貪吃蛇的中心是:定義蛇身第一節(jié),即鏈表頭為temp。鏈表的子節(jié)點為next。蛇頭帶著temp(鏈表頭)走,temp帶著next(鏈表子節(jié)點)走。

1. 創(chuàng)建一個cube設(shè)為預(yù)設(shè)體,作為蛇身的節(jié)點。在預(yù)設(shè)體上面添加BodyScript腳本。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class BodyScript : MonoBehaviour {
  //創(chuàng)建子物體的連接節(jié)點(next節(jié)點從鏈表的第二個元素開始,next是從算上蛇頭的第三節(jié)開始)
  //用來接收物體的臨時位置  
  private Vector3 myPos;
  /// <summary>
  /// 移動方法
  /// </summary>
  /// <param name="pos">pos</param>
  public void Move(Vector3 pos)
  {
    //將移動之前的位置記錄下來
    myPos = transform.position;   
    //更新物體位置--傳進(jìn)來的父物體的位置坐標(biāo)
    transform.position = pos;
    //如果當(dāng)前cube還有子節(jié)點,不是蛇尾最后一節(jié)
    if (next != null)
    {
      //將子物體移動到父物體的位置
      next.Move(myPos);
    }
  }
}

2.在Hierarchy面板上,創(chuàng)建一個cube作為蛇頭。添加一個SnakeMove腳本。來控制蛇頭并且創(chuàng)建鏈表。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class SnakeMove : MonoBehaviour {
  //Cube預(yù)設(shè)體
  public GameObject body_prefab;
  //聲明一個計時器
  float timer = 0;
  //實例化蛇身的第一節(jié)。算上蛇頭的第二節(jié)(即鏈表的第一個節(jié)點)
  public BodyScript temp;  
  //指向最后生成的節(jié)點(相當(dāng)于指針,始終指向蛇尾) 
  public BodyScript point;

  void Update () {
    //計時器
    timer += Time.deltaTime;
      //每隔0.2秒來執(zhí)行移動
    if(timer >= 0.2f)
    {
      //移動
      Move();
      //計時器清零
       timer = 0;
    }
    //如果按下左方向鍵
    if(Input.GetKeyDown(KeyCode.LeftArrow))
    {
      //向左旋轉(zhuǎn)
      transform.Rotate(Vector3.up, -90);
    }
    //如果按下空格
    if (Input.GetKeyDown(KeyCode.Space))
    {        
      //實例化一個cube,作為蛇身的下一節(jié)(先把新生成的cube放置到視野外,現(xiàn)在還沒有把新生成的cube接到蛇身上)
      GameObject newBody = Instantiate(body_prefab, new Vector3(444, 0, 0), Quaternion.identity) as GameObject;
      //若子物體的節(jié)點為空(只有蛇頭的情況下,第一次按下空格,滿足這個if條件)
      if (temp == null)
      {
        //temp賦值。這時候,蛇身有了第一節(jié),鏈表的第一個元素產(chǎn)生。
        temp = newBody.GetComponent<BodyScript>();
        //將指針指向蛇身的第一節(jié)(因為此時只有一節(jié)身體)
        point = temp;
      }
      //第二次,第三次生成時
      else
      {

        point.next = newBody.GetComponent<BodyScript>();
        //指向下一個物體的位置
        point = point.next;
      }      
    }
  }


  //創(chuàng)建接收物體的坐標(biāo)
  Vector3 pos;
  void Move()
  {
    //獲取當(dāng)前物體的坐標(biāo)
    pos = transform.position;
    //默認(rèn)向前移動
    transform.Translate(Vector3.forward);
    //若鏈表頭不為空(就是蛇身第一個cube生成了)
    if (temp != null)
    {
      //執(zhí)行子物體移動的方法(鏈表頭開始移動)
   //貪吃蛇的重點是,蛇頭的移動帶動鏈表頭的移動,鏈表頭再帶動鏈表里的子節(jié)點移動
      temp.Move(pos);
    }     
  }
}

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

相關(guān)文章

  • 利用C#編寫Linux守護進(jìn)程實例代碼

    利用C#編寫Linux守護進(jìn)程實例代碼

    如今的編程是一場程序員和上帝的競賽,程序員要開發(fā)出更大更好、傻瓜都會用到軟件,下面這篇文章主要給大家介紹了關(guān)于利用C#編寫Linux守護進(jìn)程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2018-01-01
  • C#實現(xiàn)將HTML轉(zhuǎn)換成純文本的方法

    C#實現(xiàn)將HTML轉(zhuǎn)換成純文本的方法

    這篇文章主要介紹了C#實現(xiàn)將HTML轉(zhuǎn)換成純文本的方法,基于自定義類實現(xiàn)文本轉(zhuǎn)換功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • c# 實現(xiàn)KMP算法的示例代碼

    c# 實現(xiàn)KMP算法的示例代碼

    這篇文章主要介紹了c# 實現(xiàn)KMP算法的示例代碼,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-11-11
  • C#實現(xiàn)快速排序算法

    C#實現(xiàn)快速排序算法

    本文詳細(xì)講解了C#實現(xiàn)快速排序算法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • 對C# 多態(tài)的理解

    對C# 多態(tài)的理解

    這篇文章主要介紹了對C# 多態(tài)的理解,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下
    2020-08-08
  • C#反射內(nèi)存的處理分析

    C#反射內(nèi)存的處理分析

    這篇文章主要介紹了C#反射內(nèi)存的處理,較為詳細(xì)的分析了反射加載的內(nèi)存釋放問題,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-12-12
  • C#關(guān)于System.Collections空間詳解

    C#關(guān)于System.Collections空間詳解

    這篇文章主要介紹了C#關(guān)于System.Collections空間,需要的朋友可以參考下
    2014-07-07
  • Unity2D實現(xiàn)游戲回旋鏢

    Unity2D實現(xiàn)游戲回旋鏢

    這篇文章主要為大家詳細(xì)介紹了Unity2D實現(xiàn)游戲回旋鏢,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C# byte數(shù)組與Image相互轉(zhuǎn)換的方法

    C# byte數(shù)組與Image相互轉(zhuǎn)換的方法

    這篇文章介紹了C# byte數(shù)組與Image相互轉(zhuǎn)換的方法,有需要的朋友可以參考一下
    2013-10-10
  • C#實現(xiàn)屏幕抓圖并保存的示例代碼

    C#實現(xiàn)屏幕抓圖并保存的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實現(xiàn)屏幕抓圖并保存的功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以了解一下
    2022-12-12

最新評論