Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
36cc7c005This file is pinned to the selected release. Download the original to open it in your design tool.
/******************************************************************************
* Copyright (C) Ultraleap, Inc. 2011-2020. *
* Ultraleap proprietary and confidential. *
* *
* Use subject to the terms of the Leap Motion SDK Agreement available at *
* https://developer.leapmotion.com/sdk_agreement, or another agreement *
* between Ultraleap and you, your company or other organization. *
******************************************************************************/
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Leap.Unity.Examples {
/// <summary>
/// This script keeps a GameObject in front of the ship, off to the side a bit. The
/// skybox cannot provide a frame of reference for the linear motion of the ship, so
/// the spawned object provides one instead.
///
/// This script assumes the ship is moving along the world forward axis.
/// </summary>
[AddComponentMenu("")]
public class LinearReferenceSpawner : MonoBehaviour {
public Spaceship spaceship;
public GameObject toSpawn;
public float forwardSpawnMultiplier = 1F;
public Vector3 spawnOffset = Vector3.left * 1.5F;
private GameObject _spawnedObj;
void Update() {
bool justSpawned = false;
if (_spawnedObj == null) {
_spawnedObj = GameObject.Instantiate(toSpawn);
justSpawned = true;
}
if (justSpawned
|| (_spawnedObj.transform.position - spaceship.transform.position).z < -1F) {
setSpawnPosition();
if (justSpawned) _spawnedObj.transform.position += Vector3.forward * 2F;
}
}
private void setSpawnPosition() {
Vector3 spawnPos = spaceship.transform.position;
spawnPos += spaceship.velocity * forwardSpawnMultiplier;
spawnPos += spawnOffset;
_spawnedObj.transform.position = spawnPos;
}
public void Respawn() {
setSpawnPosition();
}
}
}