2026-05-21 스킬예측(진행중)
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class HS_CameraShaker : MonoBehaviour
|
||||
{
|
||||
public Transform cameraObject;
|
||||
public float amplitude;
|
||||
public float frequency;
|
||||
public float duration;
|
||||
public float timeRemaining;
|
||||
private Vector3 noiseOffset;
|
||||
private Vector3 noise;
|
||||
private AnimationCurve smoothCurve = new AnimationCurve(new Keyframe(0.0f, 0.0f, Mathf.Deg2Rad * 0.0f, Mathf.Deg2Rad * 720.0f), new Keyframe(0.2f, 1.0f), new Keyframe(1.0f, 0.0f));
|
||||
|
||||
void Start()
|
||||
{
|
||||
float rand = 32.0f;
|
||||
noiseOffset.x = Random.Range(0.0f, rand);
|
||||
noiseOffset.y = Random.Range(0.0f, rand);
|
||||
noiseOffset.z = Random.Range(0.0f, rand);
|
||||
}
|
||||
|
||||
public IEnumerator Shake(float amp, float freq, float dur, float wait)
|
||||
{
|
||||
yield return new WaitForSeconds(wait);
|
||||
float rand = 32.0f;
|
||||
noiseOffset.x = Random.Range(0.0f, rand);
|
||||
noiseOffset.y = Random.Range(0.0f, rand);
|
||||
noiseOffset.z = Random.Range(0.0f, rand);
|
||||
amplitude = amp;
|
||||
frequency = freq;
|
||||
duration = dur;
|
||||
timeRemaining += dur;
|
||||
if (timeRemaining > dur)
|
||||
{
|
||||
timeRemaining = dur;
|
||||
}
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
if (timeRemaining <= 0)
|
||||
return;
|
||||
|
||||
float deltaTime = Time.deltaTime;
|
||||
timeRemaining -= deltaTime;
|
||||
float noiseOffsetDelta = deltaTime * frequency;
|
||||
|
||||
noiseOffset.x += noiseOffsetDelta;
|
||||
noiseOffset.y += noiseOffsetDelta;
|
||||
noiseOffset.z += noiseOffsetDelta;
|
||||
|
||||
noise.x = Mathf.PerlinNoise(noiseOffset.x, 0.0f);
|
||||
noise.y = Mathf.PerlinNoise(noiseOffset.y, 1.0f);
|
||||
noise.z = Mathf.PerlinNoise(noiseOffset.z, 2.0f);
|
||||
|
||||
noise -= Vector3.one * 0.5f;
|
||||
noise *= amplitude;
|
||||
|
||||
float agePercent = 1.0f - (timeRemaining / duration);
|
||||
noise *= smoothCurve.Evaluate(agePercent);
|
||||
}
|
||||
|
||||
void LateUpdate()
|
||||
{
|
||||
if (timeRemaining <= 0)
|
||||
return;
|
||||
Vector3 positionOffset = Vector3.zero;
|
||||
Vector3 rotationOffset = Vector3.zero;
|
||||
positionOffset += noise;
|
||||
rotationOffset += noise;
|
||||
cameraObject.transform.localPosition = positionOffset;
|
||||
cameraObject.transform.localEulerAngles = rotationOffset;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user