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#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|