You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.5 KiB
C#

/******************************************************************************/
/*
Project - MudBun
Publisher - Long Bunny Labs
http://LongBunnyLabs.com
Author - Ming-Lun "Allen" Chou
http://AllenChou.net
*/
/******************************************************************************/
using System.Collections.Generic;
using UnityEngine;
namespace MudBun
{
public class Expander : MonoBehaviour
{
public float Period = 2.0f;
public float Distance = 1.0f;
private struct Mover
{
public Transform Transform;
public Vector3 Origin;
public Vector3 Direction;
}
private List<Mover> m_aMover;
private void Start()
{
m_aMover = new List<Mover>();
for (int i = 0; i < transform.childCount; ++i)
{
var child = transform.GetChild(i);
if (child.transform.localPosition.sqrMagnitude < MathUtil.Epsilon)
continue;
m_aMover.Add
(
new Mover ()
{
Transform = child,
Origin = child.localPosition,
Direction = child.localPosition.normalized
}
);
}
}
private float m_timer = 0.0f;
private void Update()
{
m_timer = Mathf.Repeat(m_timer + Time.deltaTime, Period);
float c = Mathf.Cos(MathUtil.TwoPi * m_timer / Period);
float h = 0.5f * Distance;
foreach (var mover in m_aMover)
{
mover.Transform.localPosition = mover.Origin + (h - h * c) * mover.Direction;
}
}
}
}