using System; using System.Collections; using System.Collections.Generic; using Common.Combat.FxAILogic; using UnityEngine; public class S1402_FXLogic : MonoBehaviour { public Vector3 offRotation; public Transform[] bodys; public float[] bodyDis; private Vector3[] defaultPos; Quaternion offRotationQ; private void Awake() { bodyDis = new float[bodys.Length]; defaultPos = new Vector3[bodys.Length]; defaultPos[0]=bodys[0].position; for (int i = 1; i < bodys.Length; i++) { Transform t1 = bodys[i - 1]; Transform t2 = bodys[i]; defaultPos[i]=t2.localPosition; bodyDis[i] = Vector3.Distance(t1.position, t2.position); } offRotationQ=Quaternion.Euler(offRotation); } private void OnEnable() { for (int i = 0; i < bodys.Length; i++) { bodys[i].localPosition = defaultPos[i]; } } private void LateUpdate() { bodys[0].rotation *= Quaternion.Euler(0, 270, 0); for (int i = 1; i < bodys.Length; i++) { Transform t1 = bodys[i - 1]; Transform t2 = bodys[i]; float d = bodyDis[i]; Vector3 dir = (t2.position - t1.position).normalized; Quaternion q = Quaternion.LookRotation(dir)*offRotationQ; t2.rotation=q; t2.position = t1.position + dir * d; } } }