feat: updated sway
now contains sway children that swing alongside the root object
This commit is contained in:
@@ -1,4 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem.Editor;
|
||||
using Random = UnityEngine.Random;
|
||||
|
||||
public class SwayMovement : MonoBehaviour{
|
||||
Vector3 originalRot;
|
||||
@@ -7,7 +12,29 @@ public class SwayMovement : MonoBehaviour{
|
||||
|
||||
private Vector3 offset;
|
||||
|
||||
[ShowInInspector, SerializeField]
|
||||
internal List<SwayChildren> swayChildren;
|
||||
|
||||
[Serializable]
|
||||
internal class SwayChildren{
|
||||
public GameObject rootObject;
|
||||
[SerializeField]
|
||||
public Vector3 originalRot;
|
||||
public float delay;
|
||||
public Vector3 rotMultiplier = new Vector3(1f, 1f, 1f);
|
||||
private Vector3 offset;
|
||||
}
|
||||
|
||||
void Start(){
|
||||
foreach (SwayChildren swayChild in swayChildren) {
|
||||
SetChildOrigins(swayChild);
|
||||
}
|
||||
|
||||
void SetChildOrigins(SwayChildren inputChild){
|
||||
inputChild.originalRot = inputChild.rootObject.transform.localEulerAngles;
|
||||
|
||||
}
|
||||
|
||||
originalRot = transform.rotation.eulerAngles;
|
||||
offset = new Vector3(Random.Range(-5, 1), Random.Range(-1, 5), Random.Range(-3, 1));
|
||||
}
|
||||
@@ -21,5 +48,24 @@ public class SwayMovement : MonoBehaviour{
|
||||
);
|
||||
|
||||
transform.rotation = Quaternion.Euler(sway);
|
||||
|
||||
foreach (SwayChildren swayChild in swayChildren) {
|
||||
CheckSwayChildren(swayChild);
|
||||
}
|
||||
|
||||
void CheckSwayChildren(SwayChildren inputChild){
|
||||
Vector3 childSway = new Vector3(
|
||||
inputChild.originalRot.x + Mathf.Sin((Time.time + offset.x - inputChild.delay) * swaySpeed.x) * swayAmount.x * inputChild.rotMultiplier.x,
|
||||
inputChild.originalRot.y + Mathf.Sin((Time.time + offset.y - inputChild.delay) * swaySpeed.y) * swayAmount.y * inputChild.rotMultiplier.y,
|
||||
inputChild.originalRot.z + Mathf.Sin((Time.time + offset.z - inputChild.delay) * swaySpeed.z) * swayAmount.z * inputChild.rotMultiplier.z
|
||||
);
|
||||
|
||||
inputChild.rootObject.transform.rotation = Quaternion.Euler(childSway);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user