首页 > 作文

unity实现简单的贪吃蛇游戏

更新时间:2023-04-09 02:29:50 阅读: 评论:0

本文实例为大家分享了unity实现简单贪吃蛇游戏的具体代码,供大家参考,具体内容如下

satuicontroller代码

using unityengine;using unityengine.ui;public class startuicontroller : monobehaviour{  public text lasttext;  public text besttext;  public toggle blue;  public toggle yellow;  public toggle border;  public toggle noborder;  void awake()  {    七下数学作业本答案lasttext.text = "上次:长度" + playerprefs.getint("lastl", 0) + ",分数" + playerprefs.getint("lasts", 0);    besttext.text = "最好:长度" + playerprefs.getint("bestl", 0) + ",分数" + playerprefs.getint("bests", 0);  }  void start()  {    if (playerprefs.getstring("sh", "sh01") == "sh01")    {      blue.ison = true;      playerprefs.tstring("sh", "sh01");      playerprefs.tstring("sb01", "sb0101");      playerprefs.tstring("sb02", "sb0102");    }    el    {      yellow.ison = true;      playerprefs.tstring("sh", "sh02");      playerprefs.tstring("sb01", "sb0201");      playerprefs.tstring("sb02", "sb0202");    }    if (playerprefs.getint("border", 1) == 1)    {      border.ison = true;      playerprefs.tint("border", 1);    }    el    {      noborder.ison = true;      playerprefs.tint("border", 0);    }  }  public void bluelected(bool ison)  {    if (ison)    {      playerprefs.tstring("sh", "sh01");      playerprefs.tstring("sb01", "sb0101");      playerprefs.tstring("sb02", "sb0102");    }  }  public void yellowlected(bool ison)  {    if (ison)    {      playerprefs.tstring("sh", "sh02");      playerprefs.tstring("sb01", "sb0201");      playerprefs.tstring("sb02", "sb0202");    }  }  public void borderlected(bool ison)  {    if (ison)    {      playerprefs.tint("border", 1);    }  }  public void noborderlected(bool ison)  {    if (ison)    {      playerprefs.tint("border", 0);    }  }  public void startgame()  {    unityengine.scenemanagement.scenemanager.loadscene(1);  }}

snakehead代码

using system.collections;using system.collections.generic;//using system.linq;using unityengine;using unityengine.ui;public class snakehead : monobehaviour{  public list<transform> bodylist = new list<transform>();  public float velocity = 0.35f;  public int step;  private int x;  private int y;  private vector3 headpos;  private transform canvas;  private bool isdie = fal;  public audioclip eatclip;  public audioclip dieclip;  public gameobject dieeffect;  public gameobject bodyprefab;  public sprite[] bodysprites = new sprite[2];  void awake()  {    canvas = gameobject.find("canvas").transform;    //通过resources.load(string path)方法加载资源,path的书写不需要加resources/以及文件扩展名    gameobject.getcomponent<image>().sprite = resources.load<sprite>(playerprefs.getstring("sh", "sh02"));    b6月21日odysprites[0] = resources.load<sprite>(playerprefs.getstring("sb01", "sb0201"));    bodysprites[1] = resources.load<sprite>(playerprefs.getstring("sb02", "sb0202"));  }  void start()  {    invokerepeating("move", 0, velocity);    x = 0;y = step;  }  void update()  {    if (input.getkeydown(keycode.space) && mainuicontroller.instance.ispau == fal &&企业高管培训; isdie == fal)    {      cancelinvoke();      invokerepeating("move", 0, velocity - 0.2f);    }    if (input.getkeyup(keycode.space) && mainuicontroller.instance.ispau == fal && isdie == fal)    {      cancelinvoke();      苹果投影仪invokerepeating("move", 0, velocity);    }    if (input.getkey(keycode.w) && y != -step && mainuicontroller.instance.ispau == fal && isdie == fal)    {      gameobject.transform.localrotation = quaternion.euler(0, 0, 0);      x = 0;y = step;    }    if (input.getkey(keycode.s) && y != step && mainuicontroller.instance.ispau == fal && isdie == fal)    {      gameobject.transform.localrotation = quaternion.euler(0, 0, 180);      x = 0; y = -step;    }    if (input.getkey(keycode.a) && x != step && mainuicontroller.instance.ispau == fal && isdie == fal)    {      gameobject.transform.localrotation = quaternion.euler(0, 0, 90);      x = -step; y = 0;    }    if (input.getkey(keycode.d) && x != -step && mainuicontroller.instance.ispau == fal && isdie == fal)    {      gameobject.transform.localrotation = quaternion.euler(0, 0, -90);      x = step; y = 0;    }  }  void move()  {    headpos = gameobject.transform.localposition;                        //保存下来蛇头移动前的位置    gameobject.transform.localposition = new vector3(headpos.x + x, headpos.y + y, headpos.z); //蛇头向期望位置移动    if (bodylist.count > 0)    {      //由于我们是双色蛇身,此方法弃用      //bodylist.last().localposition = headpos;                       //将蛇尾移动到蛇头移动前的位置      //bodylist.inrt(0, bodylist.last());                         //将蛇尾在list中的位置更新到最前     中国地球 //bodylist.removeat(bodylist.count - 1);                        //移除list最末尾的蛇尾引用      //由于我们是双色蛇身,使用此方法达到显示目的      for (int i = bodylist.count - 2; i >= 0; i--)                      //从后往前开始移动蛇身      {        bodylist[i + 1].localposition = bodylist[i].localposition;             //每一个蛇身都移动到它前面一个节点的位置      }      bodylist[0].localposition = headpos;                          //第一个蛇身移动到蛇头移动前的位置    }  }  void grow()  {    audiosource.playclipatpoint(eatclip, vector3.zero);    int index = (bodylist.count % 2 == 0) ? 0 : 1;    gameobject body = instantiate(bodyprefab, new vector3(2000, 2000, 0), quaternion.identity);    body.getcomponent<image>().sprite = bodysprites[index];    body.transform.tparent(canvas, fal);    bodylist.add(body.transform);  }  void die()  {    audiosource.playclipatpoint(dieclip, vector3.zero);    cancelinvoke();    isdie = true;    instantiate(dieeffect);    playerprefs.tint("lastl", mainuicontroller.instance.length);    playerprefs.tint("lasts", mainuicontroller.instance.score);    if (playerprefs.getint("bests", 0) < mainuicontroller.instance.score)    {      playerprefs.tint("bestl", mainuicontroller.instance.length);      playerprefs.tint("bests", mainuicontroller.instance.score);    }    startcoroutine(gameover(1.5f));  }  ienumerator gameover(float t)  {    yield return new waitforconds(t);    unityengine.scenemanagement.scenemanager.loadscene(1);  }  private void ontriggerenter2d(collider2d collision)  {    if (collision.gameobject.comparetag("food"))    {      destroy(collision.gameobject);      mainuicontroller.instance.updateui();      grow();      foodmaker.instance.makefood((random.range(0, 100) < 20) ? true : fal);    }    el if (collision.gameobject.comparetag("reward"))    {      destroy(collision.gameobject);      mainuicontroller.instance.updateui(random.range(5, 15) * 10);      grow();    }    el if (collision.gameobject.comparetag("body"))    {      die();    }    el    {      if (mainuicontroller.instance.hasborder)      {        die();      }      el      {        switch (collision.gameobject.name)        {          ca "up":            transform.localposition = new vector3(transform.localposition.x, -transform.localposition.y + 30, transform.localposition.z);            break;          ca "down":            transform.localposition = new vector3(transform.localposition.x, -transform.localposition.y - 30, transform.localposition.z);            break;          ca "left":            transform.localposition = new vector3(-transform.localposition.x + 180, transform.localposition.y, transform.localposition.z);            break;          ca "right":            transform.localposition = new vector3(-transform.localposition.x + 240, transform.localposition.y, transform.localposition.z);            break;        }      }    }  }}

mainuicontroller

using unityengine;using unityengine.ui;public class mainuicontroller : monobehaviour{  private static mainuicontroller _instance;  public static mainuicontroller instance  {    get    {      return _instance;    }  }  public bool hasborder = true;  public bool ispau = fal;  public int score = 0;  public int length = 0;  public text msgtext;  public text scoretext;  public text lengthtext;  public image pauimage;  public sprite[] pausprites;  public image bgimage;  private color tempcolor;  void awake()  {    _instance = this;  }  void start()  {    if (playerprefs.getint("border", 1) == 0)    {      hasborder = fal;      foreach (transform t in bgimage.gameobject.transform)      {        t.gameobject.getcomponent<image>().enabled = fal;      }    }  }  void update()  {    switch (score / 100)    {      ca 0:      ca 1:      ca 2:        break;      ca 3:      ca 4:        colorutility.tryparhtmlstring("#cceeffff", out tempcolor);        bgimage.color = tempcolor;        msgtext.text = "阶段" + 2;        break;      ca 5:      ca 6:        colorutility.tryparhtmlstring("#ccffdbff", out tempcolor);        bgimage.color = tempcolor;        msgtext.text = "阶段" + 3;        break;      ca 7:      ca 8:        colorutility.tryparhtmlstring("#ebffccff", out tempcolor);        bgimage.color = tempcolor;        msgtext.text = "阶段" + 4;        break;      ca 9:      ca 10:        colorutility.tryparhtmlstring("#fff3ccff", out tempcolor);        bgimage.color = tempcolor;        msgtext.text = "阶段" + 5;        break;      default:        colorutility.tryparhtmlstring("#ffdaccff", out tempcolor);        bgimage.color = tempcolor;        msgtext.text = "无尽阶段";        break;    }  }  public void updateui(int s = 5, int l = 1)  {    score += s;    length += l;    scoretext.text = "得分:\n" + score;    lengthtext.text = "长度:\n" + length;  }  public void pau()  {    ispau = !ispau;    if (ispau)    {      time.timescale = 0;      pauimage.sprite = pausprites[1];    }    el    {      time.timescale = 1;      pauimage.sprite = pausprites[0];    }  }  public void home()  {    unityengine.scenemanagement.scenemanager.loadscene(0);  }}

foodmaker代码

using unityengine;using unityengine.ui;public class foodmaker : monobehaviour{  private static foodmaker _instance;  public static foodmaker instance  {    get    {      return _instance;    }  }  public int xlimit = 21;  public int ylimit = 11;  public int xofft = 7;  public gameobject foodprefab;  public gameobject rewardprefab;  public sprite[] foodsprites;  private transform foodholder;  void awake()  {    _instance = this;  }  void start()  {    foodholder = gameobject.find("foodholder").transform;    makefood(fal);  }  public void makefood(bool isreward)  {    int index = random.range(0, foodsprites.length);    gameobject food = instantiate(foodprefab);    food.getcomponent<image>().sprite = foodsprites[index];    food.transform.tparent(foodholder, fal);    int x = random.range(-xlimit + xofft, xlimit);    int y = random.range(-ylimit, ylimit);    food.transform.localposition = new vector3(x * 30, y * 30, 0);    if (isreward)    {      gameobject reward = instantiate(rewardprefab);      reward.transform.tparent(foodholder, fal);      x = random.range(-xlimit + xofft, xlimit);      y = random.range(-ylimit, ylimit);      reward.transform.localposition = new vector3(x * 30, y * 30, 0);    }  }}

代码放置如下

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。

本文发布于:2023-04-09 02:29:49,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/9d24aa47765ac8a4aeece8d2d6f4e589.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:unity实现简单的贪吃蛇游戏.doc

本文 PDF 下载地址:unity实现简单的贪吃蛇游戏.pdf

标签:蛇头   位置   阶段   代码
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图