public static SnakeUnitController Create(SnakeUnitController parent, int i) { GameObject go = Instantiate(Resources.Load(PREFAB_PATH)) as GameObject; SnakeUnitController script = go.GetComponent <SnakeUnitController>(); script._parent = parent; script._index = i; return(script); }
//初始游戏5条命,数字显示从0开始 public void InitSnake() { //添加初始位置 for (int i = 0; i < mInitPos.Count; i++) { SnakeUnitController unit = SnakeUnitController.Create(mSnakeList.Count == 0 ? null : mSnakeList[i - 1], i); mSnakeList.Add(unit); this.AddSnakeUnit(unit.gameObject, mInitPos[i]); } lifeCounts = mSnakeList.Count; SetLifeNumText(); }
//入队 public void Enqueue(SnakeUnitController unit) { }
void FixedUpdate() { Vector3 unitV = new Vector2(Mathf.Lerp(lastX, DragEventListener.xSpeed, lerpRate), speed); if (IsTriggerWall) { unitV = new Vector3(0f, unitV.y); } lastX = unitV.x; SnakeUnitController.moveSpeed = unitV.magnitude * Time.fixedDeltaTime; List <SnakeUnitController> snakeList = SnakeManage.GetInstance().GetSnakeList(); //头节点 //游戏结束! if (isPause || snakeList.Count == 0) { GGDebug.Log("游戏结束!"); return; } SnakeUnitController firstSnake = snakeList[0]; firstSnake.transform.localPosition += unitV.normalized * SnakeUnitController.moveSpeed; Vector3 pos = firstSnake.transform.localPosition; //生命数目text SnakeManage.GetInstance().lifeNumText.transform.localPosition = pos + new Vector3(0f, 40f, 0); //Debug.Log(SnakeUnit.moveSpeed); for (int i = 0; i < snakeList.Count; i++) { snakeList[i].MyUpdate(); } //创造障碍物 Vector3 curSnakePos = SnakeManage.GetInstance().GetLifeNumTextPos(); if ((WallManage.GetInstance().curCreateWallIndex *Global.wallHeight - curSnakePos.y - Global.wallHeight) <= Screen.height / 2) //创建新的一排障碍物 { if (WallManage.GetInstance().curHorizontalType == Global.WallHorizontalType.INIT) //初始第一排 { WallManage.GetInstance().CreateInitHorizontalWall(); } else { if (WallManage.GetInstance().curHorizontalType == Global.WallHorizontalType.NONE) //空墙 { GGDebug.Log("=====================怎么创建空墙了=========================="); //WallManage.GetInstance().CreateNoneWall(); } else if (WallManage.GetInstance().curHorizontalType == Global.WallHorizontalType.SINGLE_WALL) //零散墙 { WallManage.GetInstance().CreateSingleWall(); } else if (WallManage.GetInstance().curHorizontalType == Global.WallHorizontalType.FRANCE) //单格栅栏 双格栅栏 { WallManage.GetInstance().CreateFrance(); } else if (WallManage.GetInstance().curHorizontalType == Global.WallHorizontalType.FULL_WALL) //满墙 { WallManage.GetInstance().CreateFullWall(); } } } }