/// <summary> /// 初始化移动 /// </summary> /// <param name="cube"></param> private void InitMoveDir(Cube cube) { cube.CanMove = true; if (lastMoveDir == MoveEnumDirEnum.XDir) { lastMoveDir = MoveEnumDirEnum.SubZDir; } else { lastMoveDir = MoveEnumDirEnum.XDir; } switch (lastMoveDir) { //x正方向 右下 case MoveEnumDirEnum.XDir: cube.SetInitData(lastCenter + new Vector3(-GameConfig.maxXCanMove, GameConfig.goY, 0), lastSize, lastMoveSpeed, MoveEnumDirEnum.XDir); break; //z负方向 左下 case MoveEnumDirEnum.SubZDir: cube.SetInitData(lastCenter + new Vector3(0, GameConfig.goY, GameConfig.maxZCanMove), lastSize, lastMoveSpeed, MoveEnumDirEnum.SubZDir); break; } }
/// <summary> /// 初始化数据 /// </summary> /// <param name="pos"></param> /// <param name="size"></param> /// <param name="moveSpeed"></param> /// <param name="moveEnumDirEnum"></param> public void SetInitData(Vector3 pos, Vector3 size, float moveSpeed, MoveEnumDirEnum moveEnumDirEnum) { this.gameObject.transform.localPosition = pos; this.gameObject.transform.localScale = size; this.moveSpeed = moveSpeed; this.NowMoveDir = moveEnumDirEnum; }
private void Update() { if (canMove) { switch (NowMoveDir) { //x轴负移动 case MoveEnumDirEnum.SubXDir: gameObject.transform.localPosition += Vector3.left * moveSpeed * Time.deltaTime; if (gameObject.transform.localPosition.x <= -GameConfig.maxXCanMove) { NowMoveDir = MoveEnumDirEnum.XDir; } break; //z负移动 case MoveEnumDirEnum.SubZDir: gameObject.transform.localPosition += Vector3.back * moveSpeed * Time.deltaTime; if (gameObject.transform.localPosition.z <= -GameConfig.maxZCanMove) { NowMoveDir = MoveEnumDirEnum.ZDir; } break; //x正移动 case MoveEnumDirEnum.XDir: gameObject.transform.localPosition += Vector3.right * moveSpeed * Time.deltaTime; if (gameObject.transform.localPosition.x >= GameConfig.maxXCanMove) { NowMoveDir = MoveEnumDirEnum.SubXDir; } break; //z正移动 case MoveEnumDirEnum.ZDir: gameObject.transform.localPosition += Vector3.forward * moveSpeed * Time.deltaTime; if (gameObject.transform.localPosition.z >= GameConfig.maxZCanMove) { NowMoveDir = MoveEnumDirEnum.SubZDir; } break; } } if (canDownMove) { gameObject.transform.localPosition += Vector3.down * downMoveSpeed * Time.deltaTime; if (gameObject.transform.localPosition.y <= -10.0f) { canDownMove = false; gameObject.SetActive(false); Destroy(gameObject); } } }
/// <summary> /// 清空已经存在于场景中的物体 /// </summary> private void ClearTowerGo() { lastMoveDir = MoveEnumDirEnum.XDir; lastCenter = Vector3.zero; lastSize = new Vector3(GameConfig.goX, GameConfig.goY, GameConfig.goZ); for (int i = 0; i < mToweredGoList.Count; i++) { DestroyImmediate(mToweredGoList[i]); mToweredGoList[i] = null; } mToweredGoList.Clear(); for (int i = 0; i < mDisGoList.Count; i++) { if (mDisGoList[i] != null) { DestroyImmediate(mDisGoList[i]); mDisGoList[i] = null; } } mDisGoList.Clear(); EventManager.CallAction(Events.ClearTowerGo, null); }