카메라 가속 기능 추가 #182
@@ -11,12 +11,12 @@ namespace RTG
|
||||
{
|
||||
private static readonly float _minMoveSpeed = 1e-1f;
|
||||
|
||||
[SerializeField]
|
||||
private float _moveSpeed = 6.0f;
|
||||
[SerializeField]
|
||||
private float _accelerationRate = 15.0f;
|
||||
private float _moveSpeed = 30.0f;
|
||||
private float _moveFastSpeed = 60.0f;
|
||||
private float _accelerationRate = 0f;
|
||||
|
||||
public float MoveSpeed { get { return _moveSpeed; } set { _moveSpeed = Mathf.Max(_minMoveSpeed, value); } }
|
||||
public float MoveFastSpeed { get { return _moveFastSpeed; } set { _moveFastSpeed = Mathf.Max(_minMoveSpeed, value); } }
|
||||
public float AccelerationRate { get { return _accelerationRate; } set { _accelerationRate = Mathf.Max(0.0f, value); } }
|
||||
|
||||
|
||||
|
||||
@@ -22,6 +22,10 @@ namespace RTG
|
||||
[SerializeField]
|
||||
private float _perspStandardZoomSensitivity = 10.0f;
|
||||
[SerializeField]
|
||||
private float _orthoFastZoomSensitivity = 30.0f;
|
||||
[SerializeField]
|
||||
private float _perspFastZoomSensitivity = 30.0f;
|
||||
[SerializeField]
|
||||
private float _orthoSmoothZoomSensitivity = 5.0f;
|
||||
[SerializeField]
|
||||
private float _perspSmoothZoomSensitivity = 5.0f;
|
||||
@@ -37,6 +41,8 @@ namespace RTG
|
||||
public CameraZoomMode ZoomMode { get { return _zoomMode; } set { _zoomMode = value; } }
|
||||
public float OrthoStandardZoomSensitivity { get { return _orthoStandardZoomSensitivity; } set { _orthoStandardZoomSensitivity = Mathf.Max(value, 1e-3f); } }
|
||||
public float PerspStandardZoomSensitivity { get { return _perspStandardZoomSensitivity; } set { _perspStandardZoomSensitivity = Mathf.Max(value, 1e-3f); } }
|
||||
public float OrthoFastZoomSensitivity { get { return _orthoFastZoomSensitivity; } set { _orthoFastZoomSensitivity = Mathf.Max(value, 1e-3f); } }
|
||||
public float PerspFastZoomSensitivity { get { return _perspFastZoomSensitivity; } set { _perspFastZoomSensitivity = Mathf.Max(value, 1e-3f); } }
|
||||
public float OrthoSmoothZoomSensitivity { get { return _orthoSmoothZoomSensitivity; } set { _orthoSmoothZoomSensitivity = Mathf.Max(value, 1e-3f); } }
|
||||
public float PerspSmoothZoomSensitivity { get { return _perspSmoothZoomSensitivity; } set { _perspSmoothZoomSensitivity = Mathf.Max(value, 1e-3f); } }
|
||||
public float OrthoZoomSmoothValue { get { return _orthoZoomSmoothValue; } set { _orthoZoomSmoothValue = Mathf.Max(value, 1e-3f); } }
|
||||
@@ -49,16 +55,19 @@ namespace RTG
|
||||
return camera.orthographic ? OrthoZoomSmoothValue : PerspZoomSmoothValue;
|
||||
}
|
||||
|
||||
public float GetZoomSensitivity(Camera camera)
|
||||
public float GetZoomSensitivity(Camera camera, bool isFast)
|
||||
{
|
||||
if (_zoomMode == CameraZoomMode.Standard) return camera.orthographic ? OrthoStandardZoomSensitivity : PerspStandardZoomSensitivity;
|
||||
else
|
||||
if (_zoomMode == CameraZoomMode.Smooth) return camera.orthographic ? OrthoSmoothZoomSensitivity : PerspSmoothZoomSensitivity;
|
||||
|
||||
if (_zoomMode == CameraZoomMode.Standard)
|
||||
{
|
||||
if(camera.orthographic)
|
||||
return isFast ? OrthoFastZoomSensitivity : OrthoStandardZoomSensitivity;
|
||||
else
|
||||
return isFast ? PerspFastZoomSensitivity : PerspStandardZoomSensitivity;
|
||||
}
|
||||
//if (_zoomMode == CameraZoomMode.Smooth) return camera.orthographic ? OrthoSmoothZoomSensitivity : PerspSmoothZoomSensitivity;
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected override void RenderContent(UnityEngine.Object undoRecordObject)
|
||||
{
|
||||
|
||||
|
||||
@@ -349,8 +349,10 @@ namespace RTG
|
||||
|
||||
void GetInput()
|
||||
{
|
||||
float moveAmount = (_moveSettings.MoveSpeed + _currentAcceleration) * Time.deltaTime;
|
||||
|
||||
float moveSpeed = RTInput.GetKey(KeyCode.LeftShift) ? _moveSettings.MoveFastSpeed : _moveSettings.MoveSpeed;
|
||||
|
||||
float moveAmount = (moveSpeed + _currentAcceleration) * Time.deltaTime;
|
||||
Debug.Log("moveSpeed " + moveAmount);
|
||||
Vector3 moveVector = Vector3.zero;
|
||||
_moveDirFlags[(int)MoveDirection.Forward] = Hotkeys.MoveForward.IsActive();
|
||||
_moveDirFlags[(int)MoveDirection.Backwards] = !_moveDirFlags[(int)MoveDirection.Forward] && Hotkeys.MoveBack.IsActive();
|
||||
@@ -465,19 +467,20 @@ namespace RTG
|
||||
return;
|
||||
|
||||
float mouseScroll = RTInput.MouseScroll();
|
||||
bool isFast = RTInput.GetKey(KeyCode.LeftShift);
|
||||
if (Mathf.Approximately(mouseScroll, 0.0f))
|
||||
return;
|
||||
|
||||
if (_zoomSettings.ZoomMode == CameraZoomMode.Standard)
|
||||
{
|
||||
Zoom(CalculateScrollZoomAmount(mouseScroll));
|
||||
Zoom(CalculateScrollZoomAmount(mouseScroll, isFast));
|
||||
//마우스 포인터위치로
|
||||
}
|
||||
else
|
||||
{
|
||||
StopCamTransform();
|
||||
StartCoroutine(_genricCamTransformCrtn = DoSmoothZoom(mouseScroll));
|
||||
}
|
||||
//else
|
||||
//{
|
||||
// StopCamTransform();
|
||||
// StartCoroutine(_genricCamTransformCrtn = DoSmoothZoom(mouseScroll));
|
||||
//}
|
||||
}
|
||||
|
||||
public void SliderZoomInOut(int value)
|
||||
@@ -558,9 +561,9 @@ namespace RTG
|
||||
return _targetTransform.position + _targetTransform.forward * _focusPointOffset;
|
||||
}
|
||||
|
||||
private float CalculateScrollZoomAmount(float deviceScroll)
|
||||
private float CalculateScrollZoomAmount(float deviceScroll, bool isFast)
|
||||
{
|
||||
float zoomAmount = deviceScroll * _zoomSettings.GetZoomSensitivity(TargetCamera);
|
||||
float zoomAmount = deviceScroll * _zoomSettings.GetZoomSensitivity(TargetCamera, isFast);
|
||||
|
||||
if (_zoomSettings.InvertZoomAxis)
|
||||
zoomAmount *= -1.0f;
|
||||
@@ -722,18 +725,18 @@ namespace RTG
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerator DoSmoothZoom(float deviceScroll)
|
||||
{
|
||||
float zoomAmount = CalculateScrollZoomAmount(deviceScroll);
|
||||
//private IEnumerator DoSmoothZoom(float deviceScroll)
|
||||
//{
|
||||
// float zoomAmount = CalculateScrollZoomAmount(deviceScroll);
|
||||
|
||||
while(!Mathf.Approximately(zoomAmount, 0.0f))
|
||||
{
|
||||
Zoom(zoomAmount);
|
||||
zoomAmount = Mathf.Lerp(zoomAmount, 0.0f, _zoomSettings.GetZoomSmoothValue(TargetCamera) * Time.deltaTime);
|
||||
// while(!Mathf.Approximately(zoomAmount, 0.0f))
|
||||
// {
|
||||
// Zoom(zoomAmount);
|
||||
// zoomAmount = Mathf.Lerp(zoomAmount, 0.0f, _zoomSettings.GetZoomSmoothValue(TargetCamera) * Time.deltaTime);
|
||||
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
// yield return null;
|
||||
// }
|
||||
//}
|
||||
|
||||
private IEnumerator DoConstantRotationSwitch(Quaternion targetRotation)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user