public void AddCommand(float camPos, float camDist) { ICommand distCommand; ICommand posCommand; if (lastCamPos == camPos) // No movement { posCommand = new NoCommand(); } else if (lastCamPos < camPos) // Moved right { posCommand = new CameraMoveRight(); } else // Moved left { posCommand = new CameraMoveLeft(); } if (lastCamDist == camDist) // No movement { distCommand = new NoCommand(); } else if (lastCamDist < camDist) // Zoomed out { distCommand = new CameraForward(); } else // Zoomed in { distCommand = new CameraBackward(); } properties.SetCommands(currentSlot, posCommand, distCommand); currentSlot++; }
void Update() { if (Input.GetKey(KeyCode.A) || _joystick.Horizontal == -1) { _cameraLeft = new CameraMoveLeft(_cameraSpeed); _cameraLeft.Excute(); } else if (Input.GetKey(KeyCode.D) || _joystick.Horizontal == 1) { _cameraRight = new CameraMoveRight(_cameraSpeed); _cameraRight.Excute(); } else if (Input.GetKey(KeyCode.W) || _joystick.Vertical == 1) { _cameraUp = new CameraMoveUp(_cameraSpeed); _cameraUp.Excute(); } else if (Input.GetKey(KeyCode.S) || _joystick.Vertical == -1) { _cameraDown = new CameraMoveDown(_cameraSpeed); _cameraDown.Excute(); } else if (Input.GetKeyDown(KeyCode.R)) { //YZ평면을 기준으로 방향벡터 대칭이동 Vector3 newForward = _camera.transform.forward; newForward.x *= -1; _camera.transform.forward = newForward; Plane plane = new Plane(Vector3.up, 0); float distance; Ray ray = new Ray(_camera.transform.position, _camera.transform.forward); if (plane.Raycast(ray, out distance)) { Vector3 newPos = ray.GetPoint(distance); _camera.transform.position -= newPos; } } _inputMode.Update(); }