Files
fatal-exception/Assets/Scripts/GameIntroCutscene.cs
2020-02-02 15:03:58 -05:00

96 lines
2.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameIntroCutscene : Cutscene
{
public SpriteRenderer sceneA;
public SpriteRenderer sceneB;
public SpriteRenderer sceneC;
public Sprite[] sprites;
public Camera camera;
private Vector3 basePosition;
private int shakeTime = 0;
private void Start()
{
basePosition = camera.transform.position;
}
private void Update()
{
if (shakeTime > 0)
{
camera.transform.position = basePosition + new Vector3(
Random.Range(-0.2f, 0.2f), Random.Range(-0.2f, 0.2f), basePosition.z);
shakeTime--;
if (shakeTime == 0)
camera.transform.position = basePosition;
}
}
void Shake(int time)
{
shakeTime = time;
}
protected override IEnumerator OnScenePlay()
{
yield return TestA();
yield return TestB();
}
IEnumerator TestA()
{
sceneA.sprite = sprites[0];
sceneB.sprite = sprites[1];
sceneC.sprite = sprites[2];
for (int i = 0; i <= 150; i++)
{
var percent = 1f * i / 150;
sceneA.transform.position = Vector3.Lerp(
new Vector3(-0.16f, -0.04f, 0f),
new Vector3(3.08f, -0.04f, 0f),
percent);
sceneB.transform.position = Vector3.Lerp(
new Vector3(1.5f, -1.22f, -2f),
new Vector3(-2.2f, -1.22f, -2f),
percent);
sceneC.transform.position = Vector3.Lerp(
new Vector3(0.38f, -1.08f, -1f),
new Vector3(3.62f, -1.08f, -1f),
percent);
yield return null;
}
yield return new WaitForSeconds(.8f);
sceneC.sprite = sprites[3];
Shake(15);
yield return new WaitForSeconds(1f);
}
IEnumerator TestB()
{
sceneA.sprite = sprites[4];
sceneB.sprite = sprites[5];
sceneC.gameObject.SetActive(false);
sceneA.transform.position = new Vector3(0f, 0f, 0f);
sceneB.transform.position = new Vector3(0f, 0f, -10f);
Shake(60);
for (int i = 0; i <= 60; i++)
{
sceneA.transform.localScale.Set(i % 4 >= 2 ? -1f : 1f, 1f, 1f);
yield return null;
}
}
}