// Check the given directions and reverse directions // to get a proper move direction // return zero if moster cannot move to none of them. private Vector3 ChooseDirection(Vector3 first, Vector3 second) { // check order // 1. first // 2. second // 3. -second // 4. -first if (!gridMove.IsReverseDirection(first) && !gridMove.CheckWall(first)) { return(first); } if (!gridMove.IsReverseDirection(second) && !gridMove.CheckWall(second)) { return(second); } first *= -1.0f; second *= -1.0f; if (!gridMove.IsReverseDirection(second) && !gridMove.CheckWall(second)) { return(second); } if (!gridMove.IsReverseDirection(first) && !gridMove.CheckWall(first)) { return(first); } return(Vector3.zero); }
public void OnGrid(Vector3 newPos) { // 보석을 줍는다. m_map.PickUpItem(newPos); Vector3 direction; if (GlobalParam.GetInstance().IsAdvertiseMode()) { direction = GetAdvModeMoveDirection(); } else { direction = GetMoveDirection(); } // 키 입력 없음(방향 전환 하지 않는다). if (direction == Vector3.zero) { return; } // 키 입력 방향으로 이동(이동할 수 있는 경우). if (!m_grid_move.CheckWall(direction)) { m_grid_move.SetDirection(direction); } }
public void OnGrid(Vector3 newPos) { // 捡起宝石 m_map.PickUpItem(newPos); Vector3 direction; if (GlobalParam.GetInstance().IsAdvertiseMode()) { direction = GetAdvModeMoveDirection(); } else { direction = GetMoveDirection(); } // 没有按键输入(不转换方向) if (direction == Vector3.zero) { return; } // 先按键输入的方向移动(允许移动的情况下) if (!m_grid_move.CheckWall(direction)) { m_grid_move.SetDirection(direction); } }
public void OnGrid(Vector3 newPos) { // 宝石を拾う. m_map.PickUpItem(newPos); Vector3 direction; if (GlobalParam.GetInstance().IsAdvertiseMode()) { direction = GetAdvModeMoveDirection(); } else { direction = GetMoveDirection(); } // キー入力なし(方向転換しない). if (direction == Vector3.zero) { return; } // キー入力の方向へ移動(移動できる場合). if (!m_grid_move.CheckWall(direction)) { m_grid_move.SetDirection(direction); } }
// 从候选值中获取可能的移动方向 // 参数: // first 第一候选值 // second 第二候选值 // 返回值: // 移动方向/ 不允许移动时为Vector3.zero private Vector3 DirectionChoice(Vector3 first, Vector3 second) { // 按照下列顺序 // 第一候选值 // 第二候选值 // 第二候选值的反方向 // 第一候选值的反方向 // // 进行探测,返回允许移动的方向 // 第一候选值 if (!m_grid_move.IsReverseDirection(first) && !m_grid_move.CheckWall(first)) { return(first); } // 第二候选值 if (!m_grid_move.IsReverseDirection(second) && !m_grid_move.CheckWall(second)) { return(second); } first *= -1.0f; second *= -1.0f; // 第二候选值的反方向 if (!m_grid_move.IsReverseDirection(second) && !m_grid_move.CheckWall(second)) { return(second); } // 第一候选值的反方向 if (!m_grid_move.IsReverseDirection(first) && !m_grid_move.CheckWall(first)) { return(first); } return(Vector3.zero); }
// 이동 방향의 후보를 참고하여 이동 가능한 방향을 구한다. // 인수: // first 제1 후보. // second 제2 후보. // 반환값: // 이동 방향/ 이동 불가능하다면 Vector3.zero private Vector3 DirectionChoice(Vector3 first, Vector3 second) { // 제1 후보. // 제2 후보. // 제2 후보의 역방향. // 제1 후보의 역방향. // // 순서를 점검해 이동 가능한 방향으로 보낸다. // 제1 후보. if (!m_grid_move.IsReverseDirection(first) && !m_grid_move.CheckWall(first)) { return(first); } // 제2 후보. if (!m_grid_move.IsReverseDirection(second) && !m_grid_move.CheckWall(second)) { return(second); } first *= -1.0f; second *= -1.0f; // 제2 후보의 역방향. if (!m_grid_move.IsReverseDirection(second) && !m_grid_move.CheckWall(second)) { return(second); } // 제1 후보의 역방향. if (!m_grid_move.IsReverseDirection(first) && !m_grid_move.CheckWall(first)) { return(first); } return(Vector3.zero); }
// 移動方向の候補を参考にして移動可能な方向を得る. // 引数: // first 第一候補. // second 第二候補. // 戻り値: // 移動方向/ 移動不可能ならVector3.zero private Vector3 DirectionChoice(Vector3 first, Vector3 second) { // 第一候補. // 第二候補. // 第二候補の逆方向. // 第ー候補の逆方向. // // の順番に調べて、移動可能ならその方向を返す. // 第一候補. if (!m_grid_move.IsReverseDirection(first) && !m_grid_move.CheckWall(first)) { return(first); } // 第二候補. if (!m_grid_move.IsReverseDirection(second) && !m_grid_move.CheckWall(second)) { return(second); } first *= -1.0f; second *= -1.0f; // 第二候補の逆方向. if (!m_grid_move.IsReverseDirection(second) && !m_grid_move.CheckWall(second)) { return(second); } // 第ー候補の逆方向. if (!m_grid_move.IsReverseDirection(first) && !m_grid_move.CheckWall(first)) { return(first); } return(Vector3.zero); }
public void OnGrid(Vector3 position) { map.PickupItem(position); var direction = GetMoveDirection(); // no input if (direction == Vector3.zero) return; if (!gridMove.CheckWall(direction)) { gridMove.Direction = direction; } }