SHADE_Y3/Assets/Scripts/Gameplay/SC_JumpPad.cs

75 lines
2.0 KiB
C#
Raw Normal View History

2023-02-18 22:21:23 +08:00
using SHADE;
2023-03-04 00:19:35 +08:00
using SHADE_Scripting.Audio;
2023-02-18 22:21:23 +08:00
using System;
2023-03-08 18:49:36 +08:00
2023-02-18 22:21:23 +08:00
public class JumpPad : Script
{
2023-03-08 18:49:36 +08:00
private Transform tran;
private float defaultScale;
public float scaleMaxSize = 2.0f;
public float scaleDuration = 0.25f;
private bool landed = false;
private bool scaleUpDone = false;
[NonSerialized]
private TweenThread scaleUp;
[NonSerialized]
private TweenThread scaleDown;
2023-02-18 22:21:23 +08:00
protected override void awake()
{
2023-03-04 00:19:35 +08:00
AudioHandler.audioClipHandlers["SFXJumpPad"] = Audio.CreateAudioClip("event:/Props/jumppad_boing");
2023-03-08 18:49:36 +08:00
tran = GameObject.GetComponent<Transform>();
if (!tran)
Debug.LogError("NO TRANSFORM");
defaultScale = tran.LocalScale.y;
}
protected override void start()
{
scaleUp = TweenManager.CreateTweenThread(scaleDuration, tran.LocalScale.y, scaleMaxSize, EASING_METHOD.EASE_IN_SINE);
scaleDown = TweenManager.CreateTweenThread(scaleDuration, tran.LocalScale.y, defaultScale, EASING_METHOD.EASE_IN_SINE);
2023-02-18 22:21:23 +08:00
}
protected override void update()
{
2023-03-08 18:49:36 +08:00
if (landed && tran)
{
tran.LocalScale = new Vector3(tran.LocalScale.x, scaleUp.GetValue(), tran.LocalScale.z);
if (scaleUp.IsCompleted())
{
landed = false;
scaleUpDone = true;
scaleDown.Reset();
}
}
if (scaleUpDone && !landed)
{
tran.LocalScale = new Vector3(tran.LocalScale.x, scaleDown.GetValue(), tran.LocalScale.z);
if (scaleDown.IsCompleted())
{
scaleUpDone = false;
}
}
2023-02-18 22:21:23 +08:00
}
protected override void onCollisionEnter(CollisionInfo info)
{
if (info.GameObject.GetScript<PlayerController>() && info.GameObject.GetScript<PlayerController>().currentState == PlayerController.RaccoonStates.FALLING)
{
2023-03-04 00:19:35 +08:00
Audio.AttachAudioClipToObject(AudioHandler.audioClipHandlers["SFXJumpPad"], GameObject.EntityId);
AudioHandler.audioClipHandlers["SFXJumpPad"].Play();
2023-02-18 22:21:23 +08:00
info.GameObject.GetScript<PlayerController>().landedOnJumpPad = true;
2023-03-08 18:49:36 +08:00
landed = true;
scaleUp.Reset();
2023-02-18 22:21:23 +08:00
}
}
}
2023-03-08 18:49:36 +08:00