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;
|
||||||
|
using UnityEngine.InputSystem.Editor;
|
||||||
|
using Random = UnityEngine.Random;
|
||||||
|
|
||||||
public class SwayMovement : MonoBehaviour{
|
public class SwayMovement : MonoBehaviour{
|
||||||
Vector3 originalRot;
|
Vector3 originalRot;
|
||||||
@@ -7,7 +12,29 @@ public class SwayMovement : MonoBehaviour{
|
|||||||
|
|
||||||
private Vector3 offset;
|
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(){
|
void Start(){
|
||||||
|
foreach (SwayChildren swayChild in swayChildren) {
|
||||||
|
SetChildOrigins(swayChild);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetChildOrigins(SwayChildren inputChild){
|
||||||
|
inputChild.originalRot = inputChild.rootObject.transform.localEulerAngles;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
originalRot = transform.rotation.eulerAngles;
|
originalRot = transform.rotation.eulerAngles;
|
||||||
offset = new Vector3(Random.Range(-5, 1), Random.Range(-1, 5), Random.Range(-3, 1));
|
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);
|
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