44 lines
1.1 KiB
C#
44 lines
1.1 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
|
|
public class Orbital : MonoBehaviour
|
|
{
|
|
public Transform target;
|
|
Vector3 lastPosition;
|
|
Vector3 direction;
|
|
float distance;
|
|
|
|
Vector3 movement;
|
|
Vector3 rotation;
|
|
|
|
void Awake ()
|
|
{
|
|
direction = new Vector3(0, 0, (target.position - transform.position).magnitude);
|
|
transform.SetParent(target);
|
|
lastPosition = Input.mousePosition;
|
|
|
|
}
|
|
|
|
void Update ()
|
|
{
|
|
Vector3 mouseDelta = Input.mousePosition - lastPosition;
|
|
if (Input.GetMouseButton(0))
|
|
movement += new Vector3(mouseDelta.x * 0.1f, mouseDelta.y * 0.05f, 0F);
|
|
movement.z += Input.GetAxis("Mouse ScrollWheel") * -2.5F;
|
|
|
|
rotation += movement;
|
|
rotation.x = rotation.x % 360.0f;
|
|
rotation.y = Mathf.Clamp(rotation.y, -80F, -10F);
|
|
|
|
//direction.z = Mathf.Clamp(direction.z - movement.z * 50F, 15F, 180F);
|
|
direction.z = Mathf.Clamp(movement.z + direction.z, 15F, 100F);
|
|
transform.position = target.position + Quaternion.Euler(180F - rotation.y, rotation.x, 0) * direction;
|
|
transform.LookAt(target.position);
|
|
|
|
lastPosition = Input.mousePosition;
|
|
movement *= 0.9F;
|
|
|
|
|
|
}
|
|
}
|