Hi,
Im creating a game similar to Kalypso Media’s Dark. This game has a feature called the Shadow Leap.
The feature is shown in detail in the video below:
My script:
using UnityEngine;
using System.Collections;
public class ShadowDash : MonoBehaviour
{
public float smooth;
public GameObject ui;
public bool shadowDashButton;
private RaycastHit lastHit;
// Use this for initialization
void Awake()
{
shadowDashButton = false;
}
// Update is called once per frame
void Update ()
{
ui.transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition + new Vector3(0, 0, 10) + lastHit.normal);
if (Input.GetKey(KeyCode.Q))
shadowDashButton = true;
else
shadowDashButton = false;
if(shadowDashButton)
{
ui.SetActive(true);
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast (ray, out lastHit))
{
if (Input.GetKeyDown(KeyCode.E))
{
StopAllCoroutines ();
StartCoroutine (Motion1(lastHit.point));
}
}
}
else
{
ui.SetActive(false);
}
}
IEnumerator Motion1(Vector3 position)
{
float t = 0;
while(t < 1)
{
t += Time.deltaTime;
transform.position = Vector3.Lerp (transform.position, position, Time.unscaledDeltaTime * smooth);
yield return null;
}
}
}