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); } }
private void Tracer(Vector3 newPos) { Vector3 newDirection1st, newDirection2nd; // 자신의 위치에서 플레이어의 위치로 향하는 벡터. Vector3 diff = m_player.position - newPos; // X, Z의 절대값이 큰 쪽을 선택한다. if (Mathf.Abs(diff.x) > Mathf.Abs(diff.z)) { newDirection1st = new Vector3(1, 0, 0) * Mathf.Sign(diff.x); newDirection2nd = new Vector3(0, 0, 1) * Mathf.Sign(diff.z); } else { newDirection2nd = new Vector3(1, 0, 0) * Mathf.Sign(diff.x); newDirection1st = new Vector3(0, 0, 1) * Mathf.Sign(diff.z); } // 두 후보 중 이동 가능한 방향을 선택한다. Vector3 newDir = DirectionChoice(newDirection1st, newDirection2nd); if (newDir == Vector3.zero) { m_grid_move.SetDirection(-m_grid_move.GetDirection()); } else { m_grid_move.SetDirection(newDir); } }
private void Tracer(Vector3 newPos) { Vector3 newDirection1st, newDirection2nd; // 从自身位置指向玩家位置的向量 Vector3 diff = m_player.position - newPos; // 选择X,Z中绝对值更大的一个 if (Mathf.Abs(diff.x) > Mathf.Abs(diff.z)) { newDirection1st = new Vector3(1, 0, 0) * Mathf.Sign(diff.x); newDirection2nd = new Vector3(0, 0, 1) * Mathf.Sign(diff.z); } else { newDirection2nd = new Vector3(1, 0, 0) * Mathf.Sign(diff.x); newDirection1st = new Vector3(0, 0, 1) * Mathf.Sign(diff.z); } // 从两个候选值中选择可能移动的方向 Vector3 newDir = DirectionChoice(newDirection1st, newDirection2nd); if (newDir == Vector3.zero) { m_grid_move.SetDirection(-m_grid_move.GetDirection()); } else { m_grid_move.SetDirection(newDir); } }
private void Tracer(Vector3 newPos) { Vector3 newDirection1st, newDirection2nd; // 自分の位置からプレイヤーの位置に向かうベクトル. Vector3 diff = m_player.position - newPos; // X、Zの絶対値が大きい方を選ぶ. if (Mathf.Abs(diff.x) > Mathf.Abs(diff.z)) { newDirection1st = new Vector3(1, 0, 0) * Mathf.Sign(diff.x); newDirection2nd = new Vector3(0, 0, 1) * Mathf.Sign(diff.z); } else { newDirection2nd = new Vector3(1, 0, 0) * Mathf.Sign(diff.x); newDirection1st = new Vector3(0, 0, 1) * Mathf.Sign(diff.z); } // 二つの候補から、移動可能な方向を選ぶ. Vector3 newDir = DirectionChoice(newDirection1st, newDirection2nd); if (newDir == Vector3.zero) { m_grid_move.SetDirection(-m_grid_move.GetDirection()); } else { m_grid_move.SetDirection(newDir); } }
public void OnGrid(Vector3[] positionPage) { Vector3 pos = positionPage[0]; Vector3 near_grid = positionPage[1]; Vector3 direction = new Vector3(); direction = GetMoveDirection(); if (direction == Vector3.zero) { return; } m_grid_move.SetDirection (direction); SaveTheTurnPoint(near_grid, direction); }