47 lines
1.7 KiB
C#
47 lines
1.7 KiB
C#
using UnityEngine;
|
|
public class scr_WeaponController : MonoBehaviour
|
|
{
|
|
private scr_CharacterController characterController;
|
|
[Header("Settings")]
|
|
public WeaponSettingsModel settings;
|
|
|
|
private bool isInitialised;
|
|
|
|
Vector3 newWeaponRotation;
|
|
Vector3 newWeaponRotationVelocity;
|
|
|
|
Vector3 targetWeaponRotation;
|
|
Vector3 targetWeaponRotationVelocity;
|
|
|
|
private void Start()
|
|
{
|
|
newWeaponRotation = transform.localRotation.eulerAngles;
|
|
}
|
|
|
|
public void Initialise(scr_CharacterController CharacterController)
|
|
{
|
|
characterController = CharacterController;
|
|
isInitialised = true;
|
|
}
|
|
|
|
public void Update()
|
|
{
|
|
if (!isInitialised)
|
|
{
|
|
return;
|
|
}
|
|
|
|
targetWeaponRotation.y += settings.SwayAmount * (settings.SwayXInverted ? -characterController.input_View.x : characterController.input_View.x) * Time.deltaTime;
|
|
targetWeaponRotation.x += settings.SwayAmount * (settings.SwayYInverted ? characterController.input_View.y : -characterController.input_View.y) * Time.deltaTime;
|
|
//newWeaponRotation.x = Mathf.Clamp(newWeaponRotation.x, ViewClampYMin, ViewClampYMax);
|
|
|
|
targetWeaponRotation.x = Mathf.Clamp(targetWeaponRotation.x, -settings.SwayClampX, settings.SwayClampX);
|
|
targetWeaponRotation.y = Mathf.Clamp(targetWeaponRotation.y, -settings.SwayClampY, settings.SwayClampY);
|
|
|
|
targetWeaponRotation = Vector3.SmoothDamp(targetWeaponRotation, Vector3.zero, ref targetWeaponRotationVelocity, settings.SwayResetSmoothing);
|
|
newWeaponRotation = Vector3.SmoothDamp(newWeaponRotation, targetWeaponRotation, ref newWeaponRotationVelocity, settings.SwaySmoothing);
|
|
|
|
transform.localRotation = Quaternion.Euler(newWeaponRotation);
|
|
}
|
|
}
|