本文实例为大家分享了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 条评论) |