public void Initialize(SphereCamera sphereCamera, Transform cameraFollow, InputDebugView inputDebugView) { _sphereCamera = sphereCamera; _cameraFollow = cameraFollow; _inputDebugView = inputDebugView; enabled = true; }
protected bool onGround; //是否在地面 //初始化 public virtual void OnInit() { manager = GetComponent <PlayerStateManager>(); particle = GetComponent <PlayerParticle>(); animator = GetComponent <Animator>(); rigid = GetComponent <Rigidbody>(); cc = GetComponent <CharacterController>(); player = GetComponent <PlayerCharacter>(); camera = Camera.main.GetComponent <SphereCamera>(); }
protected override void OnLoad(EventArgs e) { _spheres = new List <Sphere> { new Sphere(Vector3.Zero, _sRadius, _sDensity) }; _camera = new SphereCamera(Width, Height, _spheres[0], StandEyeLevel); _camera.SkyBox = Starfield.Generate(_sSkySeed, 1024, 4); _frameTimer = new Stopwatch(); _lastPosUpdateTimer = new Stopwatch(); _frameTimer.Start(); _lastPosUpdateTimer.Start(); _frameCounter = 0; Mouse.Move += (sender, me) => { if (!Focused || !_captureMouse) { return; } var centre = new Point(Bounds.Left + Width / 2, Bounds.Top + Height / 2); if (WFCursor.Position.X == centre.X && WFCursor.Position.Y == centre.Y) { return; } _camera.Yaw += (WFCursor.Position.X - centre.X) / 360f; _camera.Pitch += (WFCursor.Position.Y - centre.Y) / 360f; _camera.Pitch = Tools.Clamp(_camera.Pitch, -MathHelper.PiOver2, MathHelper.PiOver2); WFCursor.Position = centre; }; Mouse.ButtonUp += (sender, me) => { if (_captureMouse) { return; } _captureMouse = true; WFCursor.Hide(); }; Keyboard.KeyDown += (sender, ke) => { switch (ke.Key) { case Key.Escape: _captureMouse = !_captureMouse; if (_captureMouse) { WFCursor.Hide(); } else { WFCursor.Show(); } break; case Key.Space: if (_camera.Altitude <= _camera.EyeHeight) { _camera.Jump(8f); } break; case Key.F11: if (WindowState == WindowState.Fullscreen) { WindowState = WindowState.Normal; } else { WindowState = WindowState.Fullscreen; } break; case Key.F12: _takeScreenShot = true; break; } }; }