Space-Smash-Out/Assets/FORGE3D/Sci-Fi Effects/Code/F3DWarpJump.cs

66 lines
1.7 KiB
C#

using UnityEngine;
using System.Collections;
namespace FORGE3D
{
public class F3DWarpJump : MonoBehaviour
{
public ParticleSystem WarpSpark;
public Transform ShipPos;
public float ShipJumpSpeed;
public Vector3 ShipJumpStartPoint;
public Vector3 ShipJumpEndPoint;
public bool SendOnSpawned;
public bool DebugLoop;
private bool isWarping;
// Use this for initialization
private void Start()
{
if (SendOnSpawned)
BroadcastMessage("OnSpawned", SendMessageOptions.DontRequireReceiver);
if (DebugLoop)
F3DTime.time.AddTimer(4, Reset);
}
private void Reset()
{
BroadcastMessage("OnSpawned", SendMessageOptions.DontRequireReceiver);
var psys = GetComponentsInChildren<ParticleSystem>();
foreach (var p in psys)
{
p.Stop(true);
p.Play(true);
}
}
public void OnSpawned()
{
isWarping = false;
WarpSpark.transform.localPosition = ShipJumpStartPoint;
ShipPos.position = WarpSpark.transform.position;
F3DTime.time.AddTimer(3, 1, OnWarp);
}
private void OnWarp()
{
isWarping = true;
}
private void ShiftShipPosition()
{
WarpSpark.transform.localPosition = Vector3.Lerp(WarpSpark.transform.localPosition, ShipJumpEndPoint,
Time.deltaTime * ShipJumpSpeed);
ShipPos.position = WarpSpark.transform.position;
}
private void Update()
{
if (isWarping)
ShiftShipPosition();
}
}
}