Add assets
This commit is contained in:
@@ -0,0 +1,236 @@
|
||||
using UnityEngine;
|
||||
|
||||
using Cainos.LucidEditor;
|
||||
using Cainos.Common;
|
||||
|
||||
namespace Cainos.PixelArtPlatformer_VillageProps
|
||||
{
|
||||
public class Elevator : MonoBehaviour
|
||||
{
|
||||
[FoldoutGroup("Params")] public Vector2 lengthRange = new Vector2(2, 5);
|
||||
[FoldoutGroup("Params")] public float waitTime = 1.0f;
|
||||
[FoldoutGroup("Params")] public float moveSpeed = 3.0f;
|
||||
[FoldoutGroup("Params")] public State startState = State.Up;
|
||||
|
||||
[FoldoutGroup("Reference")] public Rigidbody2D platform;
|
||||
[FoldoutGroup("Reference")] public SpriteRenderer chainL;
|
||||
[FoldoutGroup("Reference")] public SpriteRenderer chainR;
|
||||
|
||||
[FoldoutGroup("Runtime"), ShowInInspector]
|
||||
public float Length
|
||||
{
|
||||
get { return length; }
|
||||
set
|
||||
{
|
||||
if (value < 0) value = 0.0f;
|
||||
this.length = value;
|
||||
|
||||
platform.transform.localPosition = new Vector3(0.0f, -value, 0.0f);
|
||||
chainL.size = new Vector2(0.09375f, value - 8 * 0.03125f );
|
||||
chainR.size = new Vector2(0.09375f, value - 8 * 0.03125f );
|
||||
}
|
||||
}
|
||||
private float length;
|
||||
|
||||
[FoldoutGroup("Runtime"), ShowInInspector]
|
||||
public State CurState
|
||||
{
|
||||
get { return curState; }
|
||||
set
|
||||
{
|
||||
curState = value;
|
||||
}
|
||||
}
|
||||
private State curState;
|
||||
|
||||
|
||||
[FoldoutGroup("Runtime"), ShowInInspector]
|
||||
public bool IsWaiting
|
||||
{
|
||||
get { return isWaiting; }
|
||||
set
|
||||
{
|
||||
if (isWaiting == value) return;
|
||||
isWaiting = value;
|
||||
waitTimer = 0.0f;
|
||||
}
|
||||
}
|
||||
private bool isWaiting = false;
|
||||
|
||||
|
||||
private float waitTimer;
|
||||
private float curSpeed;
|
||||
private float targetLength;
|
||||
private SecondOrderDynamics secondOrderDynamics = new SecondOrderDynamics(4.0f, 0.3f, -0.3f);
|
||||
|
||||
|
||||
private void Start()
|
||||
{
|
||||
curState = startState;
|
||||
Length = curState == State.Up ? lengthRange.y : lengthRange.x;
|
||||
targetLength = Length;
|
||||
|
||||
secondOrderDynamics.Reset(targetLength);
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (IsWaiting)
|
||||
{
|
||||
waitTimer += Time.deltaTime;
|
||||
if (waitTimer > waitTime) IsWaiting = false;
|
||||
curSpeed = 0.0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (curState == State.Up)
|
||||
{
|
||||
curSpeed = -moveSpeed;
|
||||
if (targetLength < lengthRange.x)
|
||||
{
|
||||
curState = State.Down;
|
||||
IsWaiting = true;
|
||||
}
|
||||
}
|
||||
else if (curState == State.Down)
|
||||
{
|
||||
curSpeed = moveSpeed;
|
||||
if (targetLength > lengthRange.y)
|
||||
{
|
||||
curState = State.Up;
|
||||
IsWaiting = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
targetLength += curSpeed * Time.deltaTime;
|
||||
}
|
||||
|
||||
private void FixedUpdate()
|
||||
{
|
||||
Length = secondOrderDynamics.Update(targetLength, Time.fixedDeltaTime);
|
||||
}
|
||||
|
||||
public enum State
|
||||
{
|
||||
Up,
|
||||
Down
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//using System.Collections;
|
||||
//using System.Collections.Generic;
|
||||
//using UnityEngine;
|
||||
//using Cainos.LucidEditor;
|
||||
|
||||
//namespace Cainos.CustomizablePixelCharacter
|
||||
//{
|
||||
// public class Elevator : MonoBehaviour
|
||||
// {
|
||||
// [FoldoutGroup("Params")] public Vector2 lengthRange = new Vector2(2, 5);
|
||||
// [FoldoutGroup("Params")] public float waitTime = 1.0f;
|
||||
// [FoldoutGroup("Params")] public float moveSpeedMax = 3.0f;
|
||||
// [FoldoutGroup("Params")] public float moveAcc = 10.0f;
|
||||
// [FoldoutGroup("Params")] public State startState = State.Up;
|
||||
|
||||
// [FoldoutGroup("Reference")] public SpriteRenderer platform;
|
||||
// [FoldoutGroup("Reference")] public SpriteRenderer chainL;
|
||||
// [FoldoutGroup("Reference")] public SpriteRenderer chainR;
|
||||
|
||||
// [FoldoutGroup("Runtime"), ShowInInspector]
|
||||
// public float Length
|
||||
// {
|
||||
// get { return length; }
|
||||
// set
|
||||
// {
|
||||
// if (value < 0) value = 0.0f;
|
||||
// this.length = value;
|
||||
|
||||
// platform.transform.localPosition = new Vector3(0.0f, -value, 0.0f);
|
||||
// chainL.size = new Vector2(0.09375f, value - 8 * 0.03125f);
|
||||
// chainR.size = new Vector2(0.09375f, value - 8 * 0.03125f);
|
||||
// }
|
||||
// }
|
||||
// private float length;
|
||||
|
||||
// [FoldoutGroup("Runtime"), ShowInInspector]
|
||||
// public State CurState
|
||||
// {
|
||||
// get { return curState; }
|
||||
// set
|
||||
// {
|
||||
// curState = value;
|
||||
// }
|
||||
// }
|
||||
// private State curState;
|
||||
|
||||
|
||||
// [FoldoutGroup("Runtime"), ShowInInspector]
|
||||
// public bool IsWaiting
|
||||
// {
|
||||
// get { return isWaiting; }
|
||||
// set
|
||||
// {
|
||||
// if (isWaiting == value) return;
|
||||
// isWaiting = value;
|
||||
// waitTimer = 0.0f;
|
||||
// }
|
||||
// }
|
||||
// private bool isWaiting = false;
|
||||
|
||||
|
||||
// private float waitTimer;
|
||||
// private float curSpeed;
|
||||
|
||||
|
||||
// private void Start()
|
||||
// {
|
||||
// curState = startState;
|
||||
// Length = curState == State.Up ? lengthRange.y : lengthRange.x;
|
||||
// }
|
||||
|
||||
// private void Update()
|
||||
// {
|
||||
// Length += curSpeed * Time.deltaTime;
|
||||
|
||||
// if (IsWaiting)
|
||||
// {
|
||||
// waitTimer += Time.deltaTime;
|
||||
// if (waitTimer > waitTime) IsWaiting = false;
|
||||
|
||||
// curSpeed = Mathf.Lerp(curSpeed, 0.0f, 7.5f * Time.deltaTime);
|
||||
// float targetLength = curState == State.Up ? lengthRange.y : lengthRange.x;
|
||||
// Length = Mathf.Lerp(Length, targetLength, 7.5f * Time.deltaTime);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// if (curState == State.Up)
|
||||
// {
|
||||
// curSpeed = Mathf.MoveTowards(curSpeed, -moveSpeedMax, moveAcc * Time.deltaTime);
|
||||
// if (Length < lengthRange.x)
|
||||
// {
|
||||
// curState = State.Down;
|
||||
// IsWaiting = true;
|
||||
// }
|
||||
// }
|
||||
// else if (curState == State.Down)
|
||||
// {
|
||||
// curSpeed = Mathf.MoveTowards(curSpeed, moveSpeedMax, moveAcc * Time.deltaTime);
|
||||
// if (Length > lengthRange.y)
|
||||
// {
|
||||
// curState = State.Up;
|
||||
// IsWaiting = true;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// public enum State
|
||||
// {
|
||||
// Up,
|
||||
// Down
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
Reference in New Issue
Block a user