100 lines
3.3 KiB
C#
100 lines
3.3 KiB
C#
using System;
|
|
using System.Collections;
|
|
using UnityEngine;
|
|
|
|
public class FD_Intro_SiplettArc : MonoBehaviour
|
|
{
|
|
public Transform arcTarget;
|
|
|
|
public Transform linearTarget;
|
|
|
|
public float arcDuration = 2f;
|
|
|
|
public float linearDuration = 2f;
|
|
|
|
public float arcSpinSpeed = 360f;
|
|
|
|
public float linearSpinSpeed = 90f;
|
|
|
|
public float arcHeight = 2f;
|
|
|
|
public float jumpHeight = 2f;
|
|
|
|
[Space(10f)]
|
|
public bool FinishedThrowAnimation;
|
|
|
|
public bool FinishedJumpAnimation;
|
|
|
|
[Space(10f)]
|
|
[SerializeField]
|
|
private SpriteRenderer SiplettRenderer;
|
|
|
|
[SerializeField]
|
|
private Animator SiplettAnimator;
|
|
|
|
[SerializeField]
|
|
private AudioClip snd_move;
|
|
|
|
[SerializeField]
|
|
private AudioClip snd_jump;
|
|
|
|
private void Awake()
|
|
{
|
|
StartCoroutine(MoveInArcAndLine());
|
|
SiplettRenderer.transform.localScale = Vector3.one * 1.35f;
|
|
SiplettRenderer.flipX = true;
|
|
SiplettAnimator.Play("Siplett_Cutscene_CupForm");
|
|
}
|
|
|
|
private IEnumerator MoveInArcAndLine()
|
|
{
|
|
Vector3 startPosition = base.transform.position;
|
|
Vector3 targetPosition = arcTarget.position;
|
|
float elapsedTime = 0f;
|
|
while (elapsedTime < arcDuration)
|
|
{
|
|
elapsedTime += Time.deltaTime;
|
|
float num = elapsedTime / arcDuration;
|
|
Vector3 position = Vector3.Lerp(startPosition, targetPosition, num);
|
|
position.y += Mathf.Sin(num * MathF.PI) * arcHeight;
|
|
base.transform.position = position;
|
|
base.transform.Rotate(Vector3.forward, arcSpinSpeed * Time.deltaTime, Space.Self);
|
|
yield return null;
|
|
}
|
|
base.transform.position = targetPosition;
|
|
startPosition = base.transform.position;
|
|
targetPosition = linearTarget.position;
|
|
elapsedTime = 0f;
|
|
SiplettRenderer.flipX = false;
|
|
SiplettAnimator.Play("Siplett_Cutscene_CupFormLanded");
|
|
while (elapsedTime < linearDuration)
|
|
{
|
|
elapsedTime += Time.deltaTime;
|
|
float t = elapsedTime / linearDuration;
|
|
base.transform.position = Vector3.Lerp(startPosition, targetPosition, t);
|
|
base.transform.Rotate(Vector3.forward, linearSpinSpeed * Time.deltaTime, Space.Self);
|
|
yield return null;
|
|
}
|
|
base.transform.position = targetPosition;
|
|
FinishedThrowAnimation = true;
|
|
}
|
|
|
|
public IEnumerator JumpUpAndDown()
|
|
{
|
|
_ = base.transform.position + Vector3.up * jumpHeight;
|
|
_ = 0.75f / 2f;
|
|
CutsceneUtils.ShakeTransform(base.transform, 0.25f, 1.5f);
|
|
CutsceneUtils.PlaySound(snd_move);
|
|
yield return new WaitForSeconds(2f);
|
|
base.transform.rotation = Quaternion.Euler(Vector3.zero);
|
|
SiplettRenderer.transform.localScale = Vector3.one;
|
|
SiplettAnimator.Play("Siplett_Cutscene_CenteredHurt");
|
|
CutsceneUtils.PlaySound(snd_jump);
|
|
CutsceneUtils.MoveTransformOnArc(base.transform, base.transform.position, 1.5f, 0.6f);
|
|
yield return new WaitForSeconds(0.6f);
|
|
CutsceneUtils.ShakeTransform(base.transform, 0.1f, 1f);
|
|
SiplettAnimator.Play("Siplett_Cutscene_CenteredIdle");
|
|
FinishedJumpAnimation = true;
|
|
}
|
|
}
|