/// <summary> /// 移動設定 /// </summary> /// <param name="moveDir"></param> public void MoveSet(Direction.DirectionState moveDir) { if (state != WoodState.Nomal) { return; } if (moveDir == Direction.DirectionState.Up) { moveTargetPosition = transform.position + MoveY; } if (moveDir == Direction.DirectionState.Down) { moveTargetPosition = transform.position - MoveY; } if (moveDir == Direction.DirectionState.Right) { moveTargetPosition = transform.position + MoveX; } if (moveDir == Direction.DirectionState.Left) { moveTargetPosition = transform.position - MoveX; } state = WoodState.Moving; }
/// <summary> /// プレイヤーの移動方向を取得し通過できるかを返す /// </summary> /// <param name="direction">プレイヤーの方向</param> /// <returns></returns> public bool IsCanPlayerMoveSelf(Direction.DirectionState direction) { if (nowPlayerEnterType == PlayerEnterType.None) { return(false); } if (nowPlayerEnterType == PlayerEnterType.All) { return(true); } if (nowPlayerEnterType == PlayerEnterType.VerticalOnly) { if (direction == Direction.DirectionState.Up || direction == Direction.DirectionState.Down) { return(true); } } if (nowPlayerEnterType == PlayerEnterType.HorizontalOnly) { if (direction == Direction.DirectionState.Right || direction == Direction.DirectionState.Left) { return(true); } } return(false); }
public void AutoMoveStart(Direction.DirectionState dir) { //if (playerMode != PlayerMode.Nomal && playerMode != PlayerMode.Slashing) // return; if (dir == Direction.DirectionState.Up) { moveTargetPosition = transform.position + moveY; } if (dir == Direction.DirectionState.Down) { moveTargetPosition = transform.position - moveY; } if (dir == Direction.DirectionState.Right) { moveTargetPosition = transform.position + moveX; } if (dir == Direction.DirectionState.Left) { moveTargetPosition = transform.position - moveX; } playerMode = PlayerMode.AutoMoving; }
public bool IsPlayerEnterMapchip(Direction.DirectionState direction, Vector2 playerPoint) { if (direction == Direction.DirectionState.Up)//上方向の場合 { if (playerPoint.y - 1 < 0) { return(false); } } if (direction == Direction.DirectionState.Down)//下方向の場合 { if (playerPoint.y + 1 >= mapChips.GetLength(0)) { return(false); } } if (direction == Direction.DirectionState.Right)//右方向の場合 { if (playerPoint.x + 1 >= mapChips.GetLength(1)) { return(false); } } if (direction == Direction.DirectionState.Left)//左方向の場合 { if (playerPoint.x - 1 < 0) { return(false); } } return(GetFindtMapChips((int)playerPoint.y, (int)playerPoint.x, direction, 1).IsCanPlayerMoveSelf(direction)); }
public void CreateBreakWood(int lenght, Direction.DirectionState dir, Vector2 pos, Vector2 point) { BreakTree bt = Instantiate(breakTree, pos, Quaternion.identity); bt.SetLenght(lenght); bt.SetSpinDirection(dir); bt.ChangeLayer((int)point.y + lenght); breakTrees.Add(bt); }
private void PlayerFlow(Direction.DirectionState moveDir, Vector2 Distination) { playerManager.SetPlayerMapPoint(Distination); playerManager.PlayerAutoMoveStart(moveDir); if (moveDir != Direction.DirectionState.Up) { playerManager.ChangePlayerLayer(); } }
// Start is called before the first frame update void Start() { renderer = GetComponent <SpriteRenderer>(); moveTargetPosition = transform.position; direction = Direction.DirectionState.Down; animator = GetComponent <Animator>(); animationMode = AnimationMode.Nomal; playerMode = PlayerMode.Starting; walkStartTimer = walkStartTime; }
private void SetRiver(int num) { nowMapChipType = MapChipType.River; nowPlayerEnterType = PlayerEnterType.AutoOnlyAll; isCanWoodEnter = true; nowSprite = MapChipSprite.River; riverDirection = (Direction.DirectionState)num; ChangeSprite(); RiverLookAtDir(riverDirection); }
/// <summary> /// 指定本数の木のマップチップを作成 /// </summary> /// <param name="length"></param> private void SetTree(int length) { nowMapChipType = MapChipType.Rock; nowPlayerEnterType = PlayerEnterType.None; treeLength = length; isCanWoodEnter = false; nowSprite = MapChipSprite.Tree; riverDirection = Direction.DirectionState.None; ChangeTreeSprite(length); }
public void WoodCreate(Vector2 Pos, Direction.DirectionState dir, int length) { Wood w = Instantiate(wood, Pos, Quaternion.identity); w.SetDirection(dir); w.SetLength(length); w.WoodChipsSet(); //w.ChangeLayer(); woods.Add(w); }
/// <summary> /// 丸太を割る /// </summary> private void CrackWood() { Vector2 pPoint = playerManager.GetPlayerMapPoint(); Vector2 fPoint = mapManager.GetFindPoint((int)pPoint.y, (int)pPoint.x, playerManager.GetPlayerDirection(), 1); if (mapManager.IsOnWood(pPoint) && mapManager.IsOnWood(fPoint)) { Wood w1 = woodManager.GetIncludedPointWood(pPoint); Wood w2 = woodManager.GetIncludedPointWood(fPoint); if (w1 == w2) { Direction.DirectionState pDir = playerManager.GetPlayerDirection(); Direction.DirectionState wDir = w1.GetDirection(); int l1; int l2; Vector2 rPoint = w1.GetRootPoint(); if (pDir == wDir) { if (pDir == Direction.DirectionState.Up || pDir == Direction.DirectionState.Down) { l1 = (int)Mathf.Abs(pPoint.y - rPoint.y) + 1; l2 = w1.GetLength() - l1; } else { l1 = (int)Mathf.Abs(pPoint.x - rPoint.x) + 1; l2 = w1.GetLength() - l1; } } else { if (pDir == Direction.DirectionState.Up || pDir == Direction.DirectionState.Down) { l2 = (int)Mathf.Abs(pPoint.y - rPoint.y); l1 = w1.GetLength() - l2; } else { l2 = (int)Mathf.Abs(pPoint.x - rPoint.x); l1 = w1.GetLength() - l2; } } woodManager.WoodCreate(pPoint * mapManager.GetMapChipSize() * new Vector2(1, -1), Direction.GetReverseDirection(pDir), l1); //自マス woodManager.SetWoodRootPoint(woodManager.GetWoodsLastNumber(), pPoint); woodManager.WoodCreate(fPoint * mapManager.GetMapChipSize() * new Vector2(1, -1), pDir, l2); //前マス woodManager.SetWoodRootPoint(woodManager.GetWoodsLastNumber(), fPoint); woodManager.ChangeWoodsLayer(); w1.Crack(); } } }
public static bool IsSameAxis(Direction.DirectionState dir1, Direction.DirectionState dir2) { if ((dir1 == Direction.DirectionState.Up || dir1 == Direction.DirectionState.Down) && (dir2 == Direction.DirectionState.Up || dir2 == Direction.DirectionState.Down)) { return(true); } if ((dir1 == Direction.DirectionState.Right || dir1 == Direction.DirectionState.Left) && (dir2 == Direction.DirectionState.Right || dir2 == Direction.DirectionState.Left)) { return(true); } return(false); }
private void PlayerPushedWood(Direction.DirectionState moveDir, Vector2 Distination) { playerManager.SetPlayerMapPoint(Distination); //if (playerManager.GetPlayerMoveMode() == 2) if (playerManager.GetPlayerMode() == 2) { playerManager.ForciblyPlayerAutoMoveStart(); } else { playerManager.PlayerStop(); playerManager.PlayerAutoMoveStart(moveDir); } if (moveDir != Direction.DirectionState.Up) { playerManager.ChangePlayerLayer(); } }
private void RiverLookAtDir(Direction.DirectionState dir) { if (dir == Direction.DirectionState.Up) { transform.rotation = Quaternion.Euler(0, 0, 0); } if (dir == Direction.DirectionState.Down) { transform.rotation = Quaternion.Euler(0, 0, 180); } if (dir == Direction.DirectionState.Right) { transform.rotation = Quaternion.Euler(0, 0, 270); } if (dir == Direction.DirectionState.Left) { transform.rotation = Quaternion.Euler(0, 0, 90); } }
/// <summary> /// 木を乗せる /// </summary> public void OnWood(Direction.DirectionState woodDir) { isOnWood = true; isCanWoodEnter = false; if (nowMapChipType == MapChipType.Hole) { if (woodDir == Direction.DirectionState.Up || woodDir == Direction.DirectionState.Down) { nowPlayerEnterType = PlayerEnterType.VerticalOnly; } else { nowPlayerEnterType = PlayerEnterType.HorizontalOnly; } } else { nowPlayerEnterType = PlayerEnterType.All; } }
public Vector2 GetFindPoint(int height, int width, Direction.DirectionState direction, int length) { if (direction == Direction.DirectionState.Up) { return(new Vector2(width, height - length)); } if (direction == Direction.DirectionState.Down) { return(new Vector2(width, height + length)); } if (direction == Direction.DirectionState.Right) { return(new Vector2(width + length, height)); } if (direction == Direction.DirectionState.Left) { return(new Vector2(width - length, height)); } return(new Vector2(width, height)); }
/// <summary> /// マップチップ群の、指定した位置から指定方向に指定距離離れたマップチップを取得 /// </summary> /// <param name="height">元位置の高さ</param> /// <param name="width">元位置の幅</param> /// <param name="direction">方向</param> /// <param name="length">距離</param> /// <returns></returns> private MapChip GetFindtMapChips(int height, int width, Direction.DirectionState direction, int length) { if (direction == Direction.DirectionState.Up) { return(mapChips[height - length, width]); } if (direction == Direction.DirectionState.Down) { return(mapChips[height + length, width]); } if (direction == Direction.DirectionState.Right) { return(mapChips[height, width + length]); } if (direction == Direction.DirectionState.Left) { return(mapChips[height, width - length]); } return(mapChips[height, width]); }
/// <summary> /// プレイヤーの方向へ指定分だけ離れたポイントを返す /// </summary> /// <param name="length">距離</param> /// <returns></returns> public Vector2 GetPlayerDirectionRemotePoint(int length) { Direction.DirectionState playerDirection = player.GetDirection(); if (playerDirection == Direction.DirectionState.Up) { return(playerMapPoint + new Vector2(0, -length)); } if (playerDirection == Direction.DirectionState.Down) { return(playerMapPoint + new Vector2(0, length)); } if (playerDirection == Direction.DirectionState.Right) { return(playerMapPoint + new Vector2(length, 0)); } if (playerDirection == Direction.DirectionState.Left) { return(playerMapPoint + new Vector2(-length, 0)); } return(playerMapPoint); }
public static Direction.DirectionState GetReverseDirection(Direction.DirectionState dir) { if (dir == DirectionState.Up) { return(DirectionState.Down); } if (dir == DirectionState.Down) { return(DirectionState.Up); } if (dir == DirectionState.Right) { return(DirectionState.Left); } if (dir == DirectionState.Left) { return(DirectionState.Right); } return(DirectionState.None); }
/// <summary> /// 移動先設定 /// </summary> private void SetTargetPosition() { if (playerMode != PlayerMode.Nomal) { return; } if (previousPlayerMode != PlayerMode.Nomal) { return; } movePreviousPosition = moveTargetPosition; if (!Input.GetKey(KeyCode.UpArrow) && !Input.GetKey(KeyCode.DownArrow) && !Input.GetKey(KeyCode.RightArrow) && !Input.GetKey(KeyCode.LeftArrow)) { walkStartTimer = 0; } if (Input.GetKey(KeyCode.UpArrow)) { if (direction == Direction.DirectionState.Up) { walkStartTimer += Time.deltaTime; if (walkStartTimer >= walkStartTime) { moveTargetPosition = transform.position + moveY; playerMode = PlayerMode.MoveWeit; } } else { direction = Direction.DirectionState.Up; //walkStartTimer = 0; } //transform.rotation = Quaternion.Euler(0,0,0); return; } if (Input.GetKey(KeyCode.DownArrow)) { if (direction == Direction.DirectionState.Down) { walkStartTimer += Time.deltaTime; if (walkStartTimer >= walkStartTime) { moveTargetPosition = transform.position - moveY; playerMode = PlayerMode.MoveWeit; } } else { direction = Direction.DirectionState.Down; //walkStartTimer = 0; } //transform.rotation = Quaternion.Euler(0, 0, 180); return; } if (Input.GetKey(KeyCode.RightArrow)) { if (direction == Direction.DirectionState.Right) { walkStartTimer += Time.deltaTime; if (walkStartTimer >= walkStartTime) { moveTargetPosition = transform.position + moveX; playerMode = PlayerMode.MoveWeit; } } else { direction = Direction.DirectionState.Right; //walkStartTimer = 0; } //transform.rotation = Quaternion.Euler(0, 0, 270); return; } if (Input.GetKey(KeyCode.LeftArrow)) { if (direction == Direction.DirectionState.Left) { walkStartTimer += Time.deltaTime; if (walkStartTimer >= walkStartTime) { moveTargetPosition = transform.position - moveX; playerMode = PlayerMode.MoveWeit; } } else { direction = Direction.DirectionState.Left; //walkStartTimer = 0; } //transform.rotation = Quaternion.Euler(0, 0, 90); return; } }
public void SetDirection(Direction.DirectionState direction) { this.direction = direction; //DirectionLook(); }
/// <summary> /// 番号から状態を変化させる /// </summary> /// <param name="num"></param> public void SetMapChipType(int num) { MapChipSelecterSetting(); switch (num) { case 0: //通常地形 nowMapChipType = MapChipType.Nomal; nowPlayerEnterType = PlayerEnterType.All; isCanWoodEnter = true; nowSprite = MapChipSprite.Nomal; riverDirection = Direction.DirectionState.None; ChangeSprite(); break; case 1: //壁用 nowMapChipType = MapChipType.Rock; nowPlayerEnterType = PlayerEnterType.None; isCanWoodEnter = false; nowSprite = MapChipSprite.Rock; riverDirection = Direction.DirectionState.None; ChangeSprite(); break; case 3: //スタート位置 nowMapChipType = MapChipType.Nomal; nowPlayerEnterType = PlayerEnterType.All; isCanWoodEnter = true; nowSprite = MapChipSprite.Nomal; riverDirection = Direction.DirectionState.None; ChangeSprite(); break; case 4: //穴 nowMapChipType = MapChipType.Hole; nowPlayerEnterType = PlayerEnterType.AutoOnlyAll; isCanWoodEnter = true; nowSprite = MapChipSprite.Hole; riverDirection = Direction.DirectionState.None; ChangeSprite(); break; case 5: //ゴール nowMapChipType = MapChipType.Nomal; nowPlayerEnterType = PlayerEnterType.All; isCanWoodEnter = true; nowSprite = MapChipSprite.Goal; riverDirection = Direction.DirectionState.None; ChangeSprite(); break; case 11: //木1つ分 SetTree(1); break; case 12: //木2つ分 SetTree(2); break; case 13: //木3つ分 SetTree(3); break; case 14: //木4つ分 SetTree(4); break; case 15: //木5つ分 SetTree(5); break; case 20: //上向き川 SetRiver(0); break; case 21: //下向き川 SetRiver(1); break; case 22: //右向き川 SetRiver(2); break; case 23: //左向き川 SetRiver(3); break; case 24: //川の岩 nowMapChipType = MapChipType.Rock; nowPlayerEnterType = PlayerEnterType.None; isCanWoodEnter = false; nowSprite = MapChipSprite.RiverRock; riverDirection = Direction.DirectionState.None; ChangeSprite(); break; } }
public void SetSpinDirection(Direction.DirectionState dir) { spinDir = dir; }
public Sprite GetNomalSprite(Direction.DirectionState dir) { return(nomalSprites[(int)dir]); }
public void PlayerAutoMoveStart(Direction.DirectionState moveDir) { player.AutoMoveStart(moveDir); }
private void WoodFlowChack() { foreach (Wood w in woodManager.GetWoods()) //丸太全てに処理する { if (w.GetState() == 0) //丸太が通常状態なら { bool isAllRiver = true; foreach (Vector2 p in w.GetMapPoints()) //その丸太のある全てのマス { if (!mapManager.IsRiver(p)) //川マスに乗っていなければ { isAllRiver = false; w.OutRiverSpriteChange(); //Debug.Log("woodPoint"+p); break; } } if (!isAllRiver) //1マスでも川マスに乗っていなければ { continue; //この丸太の処理を終了 } //Debug.Log("OnRiver"); w.InRiverSpriteChange(); Direction.DirectionState distinationDir = Direction.DirectionState.None; //丸太の移動方向用 foreach (Vector2 p in w.GetMapPoints()) //全ての丸太のマスに対して { //↓川の向いている方向に丸太の乗っているマスが無ければ bool isNotDistination = w.IsIncludedMapPoint(mapManager.GetFindPoint((int)p.y, (int)p.x, mapManager.GetRiverDirection(p), 1)); if (!isNotDistination) { distinationDir = mapManager.GetRiverDirection(p);//丸太の進行方向決定 } } //ここから丸太を移動させる処理 //Debug.Log("FlowDir;" + distinationDir); Vector2[] woodDistainationPoints = new Vector2[w.GetLength()]; //移動先のポイント Vector2[] woodPoints = w.GetMapPoints(); //丸太の元にあった場所の記憶用 bool isFlow = true; //流れるかどうか bool isPlayerOnDistanation = false; //移動先にプレイヤーがいるか for (int i = 0; i < w.GetLength(); i++) //移動先のポイントを設定 { Vector2 woodDistination = mapManager.GetFindPoint((int)woodPoints[i].y, (int)woodPoints[i].x, distinationDir, 1); //丸太の1マスの移動先 woodDistainationPoints[i] = woodDistination; } foreach (Vector2 wp in woodPoints)//一度丸太のあるマスから丸太が無いことにする。 { mapManager.RemoveWood(wp); } foreach (Vector2 wDP in woodDistainationPoints)//その上で進めるかどうか確かめる { if (!mapManager.IsCanEnterWood(wDP)) { isFlow = false; //Debug.Log("FalseP:" + wDP); break; } if (wDP == playerManager.GetPlayerMapPoint() && !w.IsIncludedMapPoint(playerManager.GetPlayerMapPoint()) && !mapManager.IsRiver(wDP)) { //isFlow = false; //break; isPlayerOnDistanation = true; } } //Debug.Log("isFlow:" + isFlow); if (isFlow) //進めるなら { foreach (Vector2 wDP in woodDistainationPoints) //進む先全てのマス目に { mapManager.OnWood(wDP, w.GetDirection()); //丸太を乗せる } w.SetRootPoint(woodDistainationPoints[0]); //丸太にも現在位置を把握させる w.MoveSet(distinationDir); //丸太移動開始 if (distinationDir != Direction.DirectionState.Up) //上方向でなければ { w.ChangeLayer(); //丸太のレイヤーを変える } foreach (Vector2 wp in woodPoints) //動かす前の丸太に { if (playerManager.GetPlayerMapPoint() == wp && mapManager.GetFindPoint((int)wp.y, (int)wp.x, distinationDir, 1) != playerManager.GetPlayerMapPoint()) //プレイヤーが乗っていたなら { PlayerFlow(distinationDir, mapManager.GetFindPoint((int)wp.y, (int)wp.x, distinationDir, 1)); playerManager.SetPlayerLayer(w.GetMaxPointHeight()); break; } } if (isPlayerOnDistanation) { foreach (Vector2 wDP in woodDistainationPoints) { if (wDP == playerManager.GetPlayerMapPoint()) { if (!mapManager.IsOnWood(mapManager.GetFindPoint((int)wDP.y, (int)wDP.x, distinationDir, 1))) { Debug.Log("PFlow:" + wDP); PlayerPushedWood(distinationDir, mapManager.GetFindPoint((int)wDP.y, (int)wDP.x, distinationDir, 1)); } else if (!w.IsIncludedMapPoint(mapManager.GetFindPoint((int)wDP.y, (int)wDP.x, distinationDir, 1))) { PlayerPushedWood(distinationDir, mapManager.GetFindPoint((int)wDP.y, (int)wDP.x, distinationDir, 1)); } break; } } if (distinationDir != Direction.DirectionState.Up) { playerManager.SetPlayerLayer(w.GetMaxPointHeight()); } } } else//進めないなら { foreach (Vector2 wp in woodPoints)//元のマス目に { mapManager.OnWood(wp, w.GetDirection()); //丸太を乗せる } continue; //次の丸太に } } } }
public Sprite GetSlashSprite(Direction.DirectionState dir) { return(slashSprites[(int)dir]); }
public Sprite GetWalkSprite(Direction.DirectionState dir, int timing) { return(walkSprites[timing * 4 + (int)dir]); }
/// <summary> /// 指定したポイントに丸太を置く /// </summary> /// <param name="point"></param> public void OnWood(Vector2 point, Direction.DirectionState woodDir) { mapChips[(int)point.y, (int)point.x].OnWood(woodDir); }