Can get attack rumble while sucking?

This commit is contained in:
Jason Durand 01 2022-04-03 20:06:24 -04:00
parent 5ed2045b30
commit f4ee5d0de1

View File

@ -1,14 +1,14 @@
#nullable enable
using System.Collections; using System.Collections;
using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using Cinemachine; using Cinemachine;
using UnityEngine.InputSystem; using UnityEngine.InputSystem;
public class ScreenShaker : MonoBehaviour { public class ScreenShaker : MonoBehaviour {
CinemachineVirtualCamera cam; CinemachineVirtualCamera cam = null!;
CinemachineBasicMultiChannelPerlin noise; CinemachineBasicMultiChannelPerlin noise = null!;
Coroutine coroutine; Coroutine? coroutine;
bool rumbleHeld; (float, float)? heldRumble;
void Awake() { void Awake() {
cam = GetComponent<CinemachineVirtualCamera>(); cam = GetComponent<CinemachineVirtualCamera>();
@ -23,26 +23,27 @@ public class ScreenShaker : MonoBehaviour {
} }
public void StartHeldRumble(float rumbleLowFreq = 0.25f, float rumbleHighFreq = 0.75f) { public void StartHeldRumble(float rumbleLowFreq = 0.25f, float rumbleHighFreq = 0.75f) {
rumbleHeld = true; heldRumble = (rumbleLowFreq, rumbleHighFreq);
Gamepad.current.SetMotorSpeeds(rumbleLowFreq, rumbleHighFreq); Gamepad.current.SetMotorSpeeds(rumbleLowFreq, rumbleHighFreq);
} }
public void StopHeldRumble() { public void StopHeldRumble() {
rumbleHeld = false; heldRumble = null;
Gamepad.current.ResetHaptics(); Gamepad.current.ResetHaptics();
} }
IEnumerator ShakeCoroutine(float magnitude, float rumbleLowFreq, float rumbleHighFreq, float duration) { IEnumerator ShakeCoroutine(float magnitude, float rumbleLowFreq, float rumbleHighFreq, float duration) {
noise.m_AmplitudeGain = magnitude; noise.m_AmplitudeGain = magnitude;
noise.m_FrequencyGain = 10f; noise.m_FrequencyGain = 10f;
Gamepad.current.SetMotorSpeeds(rumbleLowFreq, rumbleHighFreq); Gamepad.current.SetMotorSpeeds(rumbleLowFreq, rumbleHighFreq);
yield return new WaitForSecondsRealtime(duration); yield return new WaitForSecondsRealtime(duration);
noise.m_AmplitudeGain = 0f; noise.m_AmplitudeGain = 0f;
noise.m_FrequencyGain = 1f; noise.m_FrequencyGain = 1f;
if (!rumbleHeld) if (heldRumble != null)
Gamepad.current.ResetHaptics(); Gamepad.current.SetMotorSpeeds(heldRumble.Value.Item1, heldRumble.Value.Item2);
else
Gamepad.current.ResetHaptics();
} }
} }