This repository has been archived on 2024-11-03. You can view files and clone it, but cannot push or open issues or pull requests.
snakeinabox/Assets/SpaceNavigator/Runtime samples/- Follow curve/Scripts/Torus.cs
2020-07-09 11:41:01 -07:00

37 lines
1.1 KiB
C#

using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class Torus : MonoBehaviour {
private Rigidbody _controller;
private List<Collider> _colliders;
private Vector3 _startPos;
public void Awake() {
_controller = GameObject.FindGameObjectWithTag("Torus controller").GetComponent<Rigidbody>();
_colliders = GetComponentsInChildren<Collider>().ToList();
_startPos = transform.position;
}
public void OnCollisionEnter(Collision collision) {
GetComponent<AudioSource>().Play();
Vector3 resetPos = collision.collider.tag == "Floor" ? _startPos : collision.collider.transform.position;
// Move the torus.
GetComponent<Rigidbody>().isKinematic = true;
_colliders.ForEach(c => c.isTrigger = true);
transform.position = resetPos;
GetComponent<Rigidbody>().isKinematic = false;
_colliders.ForEach(c => c.isTrigger = false);
// Move the controller.
Vector3 oldPos = _controller.transform.position;
_controller.transform.position = resetPos;
Vector3 delta = _controller.transform.position - oldPos;
// Move the camera.
Camera.main.transform.Translate(delta, Space.World);
}
}