Unity3D開發(fā)之貪吃蛇

主要視圖

Materials

Prefabs


Scenes

Scripts


Texture

關鍵代碼

FoodSnake

public class FoodSnake : MonoBehaviour {

    //定義預置體,方便實例化
    public GameObject foodSanke;

   //公開食物生成位置
    public int xLimit = 30;
    public int yLimit = 22;

    void Start () {

        //調(diào)用方法的函數(shù)
        InvokeRepeating("CreateFood",1,3);
    
    }
    
    
    void Update () {
    
    }


    void CreateFood() { 
    
    //實例化食物 游戲對象的自身方法
       // GameObject.Instantiate(foodSanke,new Vector2(1,1),Quaternion.identity);

        //讓位置隨機 x=61 y=45;
        //GameObject.Instantiate(foodSanke,new Vector2(Random.Range(-30,30),Random.Range(-22,22)),Quaternion.identity);
        
        //方便修改食物生成范圍缠借,將位置公開

        GameObject.Instantiate(foodSanke,new Vector2(Random.Range(-xLimit,xLimit),Random.Range(-yLimit,yLimit)),Quaternion.identity);
    
    }
}

MoveSnake

using UnityEngine;
using System.Collections;
using System.Collections.Generic;//引用 泛型集合 命名空間 
using System.Linq;//引用铅匹,命名空間
using UnityEngine.SceneManagement;//轉換場景需要的引用


public class MoveSnake : MonoBehaviour {

   



    //定義一個transform類型的變量
    private Transform m_Transform;

    //定義一個開始的方向 默認向上移動
    Vector2 direction = Vector2.up;


    //定義一個公開的速度 為之后游戲速度改變做準備
    public float velocitytime = 0.5f;


    //定義一個公開的body變量高职,用來存放cube body預置體
    public GameObject body;

    //定義一個開關,用來檢測食物
    private bool Open = false;


    //將蛇身存入一個集合里去 定義集合 的變量
    List<Transform> snakeBody = new List<Transform>();

    void Start () {
    
        //賦值
        m_Transform=gameObject.GetComponent<Transform>();

        //重復調(diào)用方法的函數(shù)
        //InvokeRepeating("Move",0.5f,0.5f);//參數(shù)1:移動的方法 參數(shù)2:第一次調(diào)用的時間 參數(shù)3:以后每個0.5f秒調(diào)用一次导饲;

        InvokeRepeating("Move", 0.5f, velocitytime);
    }
    
    
    void Update () {
    
        //控制方向
        if (Input.GetKey(KeyCode.A))
        {
            direction = Vector2.left;
        }
        if (Input.GetKey(KeyCode.D))
        {
            direction = Vector2.right;
        }
        if (Input.GetKey(KeyCode.W))
        {
            direction = Vector2.up;
        }
        if (Input.GetKey(KeyCode.S))
        {
            direction = Vector2.down;
        }





    }

    /// <summary>
    /// 移動的方法
    /// </summary>
    void Move() {


        //在移動過程中朵锣,判斷開關是否打開谬盐,打開就創(chuàng)建蛇身;(實例化)位置為本次蛇頭的位置
        Vector3 VPosition = m_Transform.position; //先執(zhí)行這一句诚些,保存起來位置设褐,再執(zhí)行下一句,讓它移動
       
        //默認向上移動
        m_Transform.Translate(direction);  
 
        if (Open)
        {
            //實例化 蛇身
          // GameObject.Instantiate(body,VPosition,Quaternion.identity);
            //把實例化的蛇身存起來泣刹;
            GameObject bodyYuzhi = GameObject.Instantiate(body,VPosition,Quaternion.identity) as GameObject;
           
            //集合插入方法 吃掉食物后在定義的蛇身集合0 號位前面插入實例化后的蛇身
            
            snakeBody.Insert(0,bodyYuzhi.transform);

            //檢查是否插入成功
           // Debug.Log(snakeBody.Count);

            //實力一次之后把開關 關掉
           // Open = false;
           Open = !Open;

        }else if (snakeBody.Count > 0)//判斷集合里有元素(蛇身)的話 將蛇身跟隨蛇頭移動的方法
        {
            //蛇身的位置等于蛇頭的位置
            snakeBody.Last().position = VPosition;
           // Debug.Log(snakeBody.Last().position);
            //把最后一個位置從零號位插入助析;
            snakeBody.Insert(0, snakeBody.Last());
            //把最后一個元素刪除掉;
            snakeBody.RemoveAt(snakeBody.Count - 1);//參數(shù):表示固定的下標移除元素椅您;  
          
           

        }
    }




    //沒有剛體 又想觸發(fā)事件 有兩個碰撞器前提下外冀,將蛇改成觸發(fā)器,添加剛體掀泳,不使用重力 
    //食物是碰撞體就行 ,并且將碰撞體的size改成0.5雪隧,否則側面也會吃掉食物的;

    //蛇在移動過程中员舵,檢測下觸發(fā)了誰脑沿,就讓說消失 把食物的便簽改成Food;

    /// <summary>
    /// 檢測觸發(fā)方法
    /// </summary>
    /// <param name="coll">觸發(fā)的對象</param>
    void OnTriggerEnter(Collider coll) {

        if (coll.gameObject.tag == "Food")
        {
            //觸發(fā)食物马僻,將開關打開庄拇;
            // Open = true;
            Open = !Open;
            //銷毀食物
            Destroy(coll.gameObject);
        }
        else { 
          //如果不是觸發(fā)食物韭邓,觸發(fā)其他物體措近,游戲結束;
            //切換場景
           // SceneManager.LoadScene(0);//場景管理女淑,加載到另一場景 場景就是設置的第一個 在邊框加上4個碰撞器 觸發(fā)其他即游戲重新開始瞭郑;
            //切換第二場景
            SceneManager.LoadScene(0);
        
        }
    }


}

StartUI

using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;//場景管理命名空間

public class StartUI : MonoBehaviour {

    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {

        if (Input.GetMouseButtonDown(0))
        {
            //點擊回到第一個場景;
            SceneManager.LoadScene(1);
        }
    
    }
}

后記:沒有計分鸭你,沒有結束界面(因為在滾動球和飛盤射擊都已經(jīng)寫過了屈张,這里就不再一一重復了)
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末擒权,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子阁谆,更是在濱河造成了極大的恐慌碳抄,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笛厦,死亡現(xiàn)場離奇詭異纳鼎,居然都是意外死亡俺夕,警方通過查閱死者的電腦和手機裳凸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來劝贸,“玉大人姨谷,你說我怎么就攤上這事∮尘牛” “怎么了梦湘?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長件甥。 經(jīng)常有香客問我捌议,道長,這世上最難降的妖魔是什么引有? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任瓣颅,我火速辦了婚禮,結果婚禮上譬正,老公的妹妹穿的比我還像新娘宫补。我一直安慰自己,他們只是感情好曾我,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布粉怕。 她就那樣靜靜地躺著,像睡著了一般抒巢。 火紅的嫁衣襯著肌膚如雪贫贝。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天蛉谜,我揣著相機與錄音平酿,去河邊找鬼。 笑死悦陋,一個胖子當著我的面吹牛蜈彼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播俺驶,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼幸逆,長吁一口氣:“原來是場噩夢啊……” “哼棍辕!你這毒婦竟也來了?” 一聲冷哼從身側響起还绘,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤楚昭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拍顷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抚太,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年昔案,在試婚紗的時候發(fā)現(xiàn)自己被綠了尿贫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡踏揣,死狀恐怖庆亡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情捞稿,我是刑警寧澤又谋,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站娱局,受9級特大地震影響彰亥,放射性物質發(fā)生泄漏。R本人自食惡果不足惜衰齐,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一任斋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧娇斩,春花似錦仁卷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至歉嗓,卻和暖如春丰介,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鉴分。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工哮幢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人志珍。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓橙垢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親伦糯。 傳聞我的和親對象是個殘疾皇子柜某,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容