Unity3D 协程实现贪吃蛇
来源:互联网 发布:js获取当前网址 编辑:程序博客网 时间:2024/06/05 02:31
using System.Collections;using System.Collections.Generic;using UnityEngine;public class ControlSnake : MonoBehaviour { List<SnakeBody> snake; public Transform head; public Transform bodyOne; public Transform bodyTwo; SnakeBody snakeHead; // Use this for initialization void Start () { snake = new List<SnakeBody>(); snakeHead = new SnakeBody(null,head); SnakeBody snakeBodyOne = new SnakeBody(snakeHead, bodyOne); snake.Add(snakeBodyOne); SnakeBody snakeBodyTwo = new SnakeBody(snakeBodyOne, bodyTwo); snake.Add(snakeBodyTwo); Debug.Log(snake.Count); StartCoroutine(MoveSanke()); } public IEnumerator MoveSanke() { while (true) { snakeHead.MoveFront(); yield return new WaitForSeconds(0.1f); for (int i = 0; i < snake.Count; i++) { SnakeBody tmpSnake = snake[i]; Debug.Log("i ===="+i); tmpSnake.FollowFront(); yield return new WaitForSeconds(0.3f); } } } // Update is called once per frame void Update () { if (Input.GetKeyDown(KeyCode.A)) { snakeHead.MoveLeft(); } if (Input.GetKeyDown(KeyCode.D)) { snakeHead.MoveRight(); } }}
using System.Collections;using System.Collections.Generic;using UnityEngine;public class SnakeBody { public SnakeBody(SnakeBody front ,Transform tmpBody) { Body = tmpBody; if (front == null) { Debug.Log(" 11 111"); } FrontBody = front; if (FrontBody != null) oldPos = FrontBody.body.position; } SnakeBody frontBody; public SnakeBody FrontBody { get { return frontBody; } set { frontBody = value; } } Transform body; public Transform Body { get { return body; } set { body = value; Debug.Log(" body Name" + body.name); } } Vector3 oldPos; public virtual void MoveFront() { body.Translate(Vector3.forward*2); } public void MoveLeft() { Vector3 anlge= body.localEulerAngles; anlge.y -= 90; body.localEulerAngles = anlge; } public void MoveRight() { Vector3 anlge = body.localEulerAngles; anlge.y += 90; body.localEulerAngles = anlge; } public void SetNewPostion() { Debug.Log(body.name); oldPos = body.position; } public void FollowFront() { // 当前 body 赋值到 前面一个位置 。 body.position = FrontBody.oldPos; // body.position = oldPos; // 前面一个 位置 oldPos 赋值给 新的位置。 if (frontBody != null) frontBody.SetNewPostion(); }}
阅读全文
1 0
- Unity3D 协程实现贪吃蛇
- unity3d之贪吃蛇
- unity3d 贪吃蛇移动
- unity3d之3D贪吃蛇
- 贪吃蛇C实现
- js实现贪吃蛇
- JavaScript实现贪吃蛇
- javascript实现贪吃蛇
- javascript实现贪吃蛇
- QT实现贪吃蛇
- javascript实现贪吃蛇。
- 贪吃蛇c++实现
- 贪吃蛇实现--Java
- HTML5_实现贪吃蛇
- JavaScript 贪吃蛇实现
- win32贪吃蛇实现
- Java实现贪吃蛇
- 贪吃蛇游戏实现
- leetcode-13-Roman to Integer
- URI URL URN
- 异步模块模式
- Windows和Linux中的动态链接库
- java利用Condition做超时机制
- Unity3D 协程实现贪吃蛇
- LNMP一键包安装后解决MySQL无法远程连接问题
- spring data 整合mongoDB基础篇
- 欢迎使用CSDN-markdown编辑器
- JAVA中常用的数据结构
- Windows下kettle安装及建立与资源库连接
- 2017.9.11 数列 失败总结
- python数据分析之Numpy
- 腾讯笔试题——五笔编码