Unity 贪吃蛇2D简易制作(二)
来源:互联网 发布:阿里云https部署 编辑:程序博客网 时间:2024/04/30 14:49
然后开始写代码: (完整项目:链接:http://pan.baidu.com/s/1jHBaZWU密码:c1wc)
此代码用于动态生成食物,,挂载场景物体上即可(灯光,背景,摄像机)
using UnityEngine;public class FoodDemo : MonoBehaviour { public GameObject SSFood; //把食物的预制体赋值 public int xLimit = 30; //游戏边界(最大高度,宽度) public int yLimit = 22;// Use this for initializationvoid Start () { //动态生成食物的时间 InvokeRepeating("Food", 1, 5);} void Food() { //随机生成食物位置 int x = Random.Range(-xLimit, xLimit); int y = Random.Range(-yLimit, yLimit); Instantiate(SSFood, new Vector2(x, y), Quaternion.identity); }}
挂载到蛇身上:,,运行游戏就可以玩耍了,,,
using System.Collections.Generic;using System.Linq;using UnityEngine;using UnityEngine.SceneManagement;//蛇的移动脚本public class Move : MonoBehaviour { List<Transform> Bodylist = new List<Transform>(); public GameObject Body; //吃到东西添加在后面的物体 public bool ISwith = false; //是否吃到 public float velocitytime = 0.5f; //初始速度 Vector2 direction = Vector2.up; //初始方向, // Use this for initializationvoid Start () { //第一次调用方法是程序开始0.5秒过后,之后每隔velocitytime秒之后调用一次 InvokeRepeating("MoveSnake",0.5f, velocitytime);}// Update is called once per framevoid Update () { if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow)) { direction = Vector2.up; } if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow)) { direction = Vector2.left; } if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow)) { direction = Vector2.down; } if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow)) { direction = Vector2.right; } }#region 移动&&核心算法 void MoveSnake() { //每执行一次获取一次头部的位置 Vector3 vpos = transform.position; //执行移动 transform.Translate(direction); if (ISwith) //吃到食物 { //实例化吃到的食物 GameObject Bodyper =(GameObject)Instantiate(Body, vpos, Quaternion.identity); //添加到list的头部 Bodylist.Insert(0, Bodyper.transform); ISwith = false; } //==============核心算法================ if (Bodylist.Count>0) { //最后一个移动到第一个的位置 Bodylist.Last().position = vpos; //list里面的元素 进行交换位置,,最后一个物体添加到list的最前面 Bodylist.Insert(0, Bodylist.Last()); //移除最后一个,,(因为他已经被加入到第一个的位置了) Bodylist.RemoveAt(Bodylist.Count - 1); } //====================================== } #endregion /// <summary> /// 触发检测 /// </summary> /// <param name="other">碰到带物体的名字</param> private void OnTriggerEnter(Collider other) { if (other.tag == "Food") //使用标签 { //销毁食物预制体 Destroy(other.gameObject); ISwith = true; } else //碰到除了food的物体,重新开始游戏 { SceneManager.LoadScene(0); } }}
阅读全文
1 0
- Unity 贪吃蛇2D简易制作(二)
- Unity 贪吃蛇2D简易制作(一)
- Unity学习笔记2 简易2D横版RPG游戏制作(二)
- 以opengl制作2D贪吃蛇(一)
- Unity学习笔记1 简易2D横版RPG游戏制作(一)
- Unity学习笔记3 简易2D横版RPG游戏制作(三)
- 利用unity 制作贪吃蛇小游戏
- 简易贪吃蛇V1.2
- Java简易版贪吃蛇的原理与制作
- unity 制作2d动画
- Unity 2D游戏制作
- 贪吃蛇小游戏2d
- 2D贪吃蛇小游戏!!!
- Unity利用CardBoardVR制作(二)一个简易的全景相册和视频
- 简易贪吃蛇(JAVA版)源代码
- 控制台简易贪吃蛇
- 简易贪吃蛇
- c++简易贪吃蛇
- 输入型参数和输出型参数
- MySql 5.7.19 -winx64 免安装版安装教程
- map-based exploration of intrinsic shape differences and variability
- MyBatis插入时候获取自增主键方法
- 京东选择题总结
- Unity 贪吃蛇2D简易制作(二)
- Python从零开始(集成开发环境VS)
- [python] 老男孩 作业二的解答
- win7下关于nginx配置的路径问题
- 跨浏览器事件兼容,巧妙处理方法
- 祝自己 19岁 生日快乐。。。
- ORA-01502 重建索引方法
- softethervpn 安装
- 函数调用的一些易错