unity dark mode asset, changes to player locomotion, camera bobbing
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
using RebootKit.Engine.Foundation;
|
||||
using System;
|
||||
using RebootKit.Engine.Foundation;
|
||||
using RebootKit.Engine.Services.Simulation.Sensors;
|
||||
using Unity.Cinemachine;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Assertions;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
namespace RealityReboot.jelycho.Player {
|
||||
[AddComponentMenu(GameConsts.k_AddComponentMenu + "Player/First Person Camera")]
|
||||
@@ -9,34 +12,47 @@ namespace RealityReboot.jelycho.Player {
|
||||
[ConfigVar("fpp.camera.fov", 60.0f, "Field of view for the first person camera.")]
|
||||
static ConfigVar s_cameraFOV;
|
||||
|
||||
[SerializeField] float _pickDistance = 5.0f;
|
||||
|
||||
[SerializeField] LayerMask _pickLayer;
|
||||
|
||||
[Header("Base")]
|
||||
[field: SerializeField]
|
||||
public float Sensitivity { get; set; }
|
||||
|
||||
[SerializeField] float _pitchMin = -80f;
|
||||
|
||||
[SerializeField] float _pitchMax = 80f;
|
||||
|
||||
[SerializeField] float m_PitchMin = -80f;
|
||||
[SerializeField] float m_PitchMax = 80f;
|
||||
|
||||
[field: SerializeField]
|
||||
public CinemachineCamera Camera { get; private set; }
|
||||
|
||||
readonly RaycastSensor _raycastSensor = new();
|
||||
CinemachineBasicMultiChannelPerlin m_BobbingNoiseComponent;
|
||||
|
||||
[SerializeField] float m_BobbingFrequency = 0.5f;
|
||||
[SerializeField] float m_BobbingAmplitude = 0.75f;
|
||||
|
||||
[Header("Picking")]
|
||||
[SerializeField] float m_PickDistance = 5.0f;
|
||||
[SerializeField] LayerMask m_PickLayer;
|
||||
|
||||
readonly RaycastSensor m_RaycastSensor = new();
|
||||
|
||||
public float Pitch { get; private set; }
|
||||
public float Yaw { get; private set; }
|
||||
|
||||
public ISensor Sensor {
|
||||
get {
|
||||
_raycastSensor.ray = new Ray(Camera.transform.position, Camera.transform.forward);
|
||||
_raycastSensor.maxDistance = _pickDistance;
|
||||
_raycastSensor.layerMask = _pickLayer;
|
||||
return _raycastSensor;
|
||||
m_RaycastSensor.ray = new Ray(Camera.transform.position, Camera.transform.forward);
|
||||
m_RaycastSensor.maxDistance = m_PickDistance;
|
||||
m_RaycastSensor.layerMask = m_PickLayer;
|
||||
return m_RaycastSensor;
|
||||
}
|
||||
}
|
||||
|
||||
void Awake() {
|
||||
m_BobbingNoiseComponent =
|
||||
Camera.GetCinemachineComponent(CinemachineCore.Stage.Noise) as CinemachineBasicMultiChannelPerlin;
|
||||
Assert.IsNotNull(m_BobbingNoiseComponent);
|
||||
|
||||
SetBobbing(0.0f);
|
||||
}
|
||||
|
||||
public void Tick() {
|
||||
Camera.Lens.FieldOfView = s_cameraFOV.FloatValue;
|
||||
Camera.transform.localRotation = Quaternion.Euler(Pitch, 0f, 0f);
|
||||
@@ -46,7 +62,7 @@ namespace RealityReboot.jelycho.Player {
|
||||
float sens = Sensitivity;
|
||||
|
||||
Pitch -= y * sens;
|
||||
Pitch = Mathf.Clamp(Pitch, _pitchMin, _pitchMax);
|
||||
Pitch = Mathf.Clamp(Pitch, m_PitchMin, m_PitchMax);
|
||||
|
||||
Yaw += x * sens;
|
||||
}
|
||||
@@ -55,5 +71,10 @@ namespace RealityReboot.jelycho.Player {
|
||||
Pitch = Mathf.Asin(-forward.y) * Mathf.Rad2Deg;
|
||||
Yaw = Mathf.Atan2(forward.x, forward.z) * Mathf.Rad2Deg;
|
||||
}
|
||||
|
||||
public void SetBobbing(float t) {
|
||||
m_BobbingNoiseComponent.AmplitudeGain = m_BobbingAmplitude * t;
|
||||
m_BobbingNoiseComponent.FrequencyGain = m_BobbingFrequency * t;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user