public CameraAttitude Update() { var time = Time.unscaledTime - _lastChangedTime; if (time > _interval) { _lastChangedTime = Time.unscaledTime; if (!_creatures.Any()) { return(_lastCameraAttitude); } _currentIndex++; if (_currentIndex >= _creatures.Count) { _currentIndex = 0; } var creature = _creatures[_currentIndex]; var transform = creature.transform.GetChild(0).transform; _camera = new FocusCamera(transform, transitionTime: TransitionTime, initialDistance: InitialDistance, farAwayDistance: FarAwayDistance); _camera.Initialize(_lastCameraAttitude); } _lastCameraAttitude = _camera.Update(Time.unscaledDeltaTime); return(_lastCameraAttitude); }
public AgentFocusStrategy(int interval = 5) { _interval = interval; _creatures = new List <Agent>(); _lastCameraAttitude = new CameraAttitude { LookAt = new Vector3(-1f, 0, -10f), Position = new Vector3(0.0f, 10.0f, -40.0f), }; // 最初は対象がいないので定点を見ておく _camera = new MonitoringCamera(_lastCameraAttitude); }
public void Transition(IOperatableCamera next, bool keepSelectingCreature = false) { var currentAttitude = _currentCamera != null?_currentCamera.Update(0.0f) : _defaultAttitude; next.Initialize(currentAttitude); _currentCamera = next; if (!keepSelectingCreature) { _selectedCreatureExtrenalProperty.Value = null; } }