274 lines
4.9 KiB
C#
274 lines
4.9 KiB
C#
using System;
|
|
using UnityEngine;
|
|
|
|
[Serializable]
|
|
public class camera_control : MonoBehaviour
|
|
{
|
|
public float speed_forward;
|
|
|
|
public float speed_forward_max;
|
|
|
|
public float speed_side;
|
|
|
|
public float speed_side_max;
|
|
|
|
public float speed_up;
|
|
|
|
public float speed_up_max;
|
|
|
|
public float speed_y;
|
|
|
|
public float speed_y_max;
|
|
|
|
public float sp_up;
|
|
|
|
public float sp_forward;
|
|
|
|
public float sp_side;
|
|
|
|
public float sp_y;
|
|
|
|
public float r;
|
|
|
|
public float spf_t;
|
|
|
|
public float sps_t;
|
|
|
|
public float spu_t;
|
|
|
|
public float spy_t;
|
|
|
|
public bool input;
|
|
|
|
public int turbo;
|
|
|
|
public float speed_turbo;
|
|
|
|
public int Gear;
|
|
|
|
public int TurboMax;
|
|
|
|
public float y_axis;
|
|
|
|
public float z_axis;
|
|
|
|
public float x_axis;
|
|
|
|
public float z_axis_max;
|
|
|
|
public float x_axis_max;
|
|
|
|
public Vector3 positionOld;
|
|
|
|
public float speed1;
|
|
|
|
public camera_control()
|
|
{
|
|
speed_forward_max = 40f;
|
|
speed_side = 40f;
|
|
speed_side_max = 40f;
|
|
speed_up_max = 30f;
|
|
speed_y_max = 12f;
|
|
sp_up = 10f;
|
|
sp_forward = 1.5f;
|
|
sp_side = 1.5f;
|
|
r = 0.25f;
|
|
Gear = 1;
|
|
TurboMax = 100;
|
|
z_axis_max = 20f;
|
|
x_axis_max = 20f;
|
|
}
|
|
|
|
public virtual void Awake()
|
|
{
|
|
spy_t = 0f;
|
|
}
|
|
|
|
public virtual void Start()
|
|
{
|
|
speed_forward = 0f;
|
|
speed_side = 0f;
|
|
InvokeRepeating("speed", 0f, 0.1f);
|
|
}
|
|
|
|
public virtual void Update()
|
|
{
|
|
r = Time.deltaTime * 5.5f / Time.timeScale;
|
|
sp_forward = Time.deltaTime * 25f / Time.timeScale;
|
|
sp_side = Time.deltaTime * 25f / Time.timeScale;
|
|
sp_up = Time.deltaTime * 25f / Time.timeScale;
|
|
sp_y = Time.deltaTime * 4f / Time.timeScale;
|
|
z_axis = Mathf.DeltaAngle(transform.rotation.eulerAngles.z, 0f);
|
|
x_axis = Mathf.DeltaAngle(0f, transform.rotation.eulerAngles.x);
|
|
y_axis = Mathf.DeltaAngle(0f, transform.rotation.eulerAngles.y);
|
|
if (Input.GetKey("up"))
|
|
{
|
|
input = true;
|
|
if (!(speed_forward >= speed_forward_max))
|
|
{
|
|
speed_forward += sp_forward;
|
|
}
|
|
spf_t = Time.time;
|
|
sps_t = Time.time;
|
|
}
|
|
if (Input.GetKey("down"))
|
|
{
|
|
input = true;
|
|
if (!(speed_forward <= 0f - speed_forward_max))
|
|
{
|
|
speed_forward -= sp_forward;
|
|
spf_t = Time.time;
|
|
sps_t = Time.time;
|
|
}
|
|
}
|
|
if (Input.GetKey("right"))
|
|
{
|
|
input = true;
|
|
if (!(speed_side >= speed_side_max))
|
|
{
|
|
speed_side += sp_side;
|
|
}
|
|
sps_t = Time.time;
|
|
spf_t = Time.time;
|
|
}
|
|
if (Input.GetKey("left"))
|
|
{
|
|
input = true;
|
|
if (!(speed_side <= 0f - speed_side_max))
|
|
{
|
|
speed_side -= sp_side;
|
|
}
|
|
sps_t = Time.time;
|
|
spf_t = Time.time;
|
|
}
|
|
if (Input.GetKey("q"))
|
|
{
|
|
input = true;
|
|
if (!(speed_up >= speed_up_max))
|
|
{
|
|
speed_up += sp_up;
|
|
}
|
|
spu_t = Time.time;
|
|
}
|
|
if (Input.GetKey("z"))
|
|
{
|
|
if (!(speed_up <= 0f - speed_up_max))
|
|
{
|
|
speed_up -= sp_up;
|
|
}
|
|
spu_t = Time.time;
|
|
}
|
|
if (Input.GetKey("w"))
|
|
{
|
|
input = true;
|
|
if (!(speed_y >= speed_y_max))
|
|
{
|
|
speed_y += sp_y;
|
|
}
|
|
spy_t = Time.time;
|
|
}
|
|
if (Input.GetKey("q"))
|
|
{
|
|
input = true;
|
|
if (!(speed_y <= 0f - speed_y_max))
|
|
{
|
|
speed_y -= sp_y;
|
|
}
|
|
spy_t = Time.time;
|
|
}
|
|
if ((!(speed_forward <= 0f) && Time.time > spf_t) || turbo == 2)
|
|
{
|
|
speed_forward -= sp_forward / 2f;
|
|
if (!(speed_forward >= 0f))
|
|
{
|
|
speed_forward = 0f;
|
|
}
|
|
}
|
|
if ((!(speed_forward >= 0f) && Time.time > spf_t) || turbo == 2)
|
|
{
|
|
speed_forward += sp_forward / 2f;
|
|
if (!(speed_forward <= 0f))
|
|
{
|
|
speed_forward = 0f;
|
|
}
|
|
}
|
|
if (!(speed_side <= 0f) && !(Time.time <= sps_t))
|
|
{
|
|
speed_side -= sp_side / 2f;
|
|
if (!(speed_side >= 0f))
|
|
{
|
|
speed_side = 0f;
|
|
}
|
|
}
|
|
if (!(speed_side >= 0f) && !(Time.time <= sps_t))
|
|
{
|
|
speed_side += sp_side / 2f;
|
|
if (!(speed_side <= 0f))
|
|
{
|
|
speed_side = 0f;
|
|
}
|
|
}
|
|
if (!(speed_up <= 0f) && !(Time.time <= spu_t))
|
|
{
|
|
speed_up -= sp_up / 2f;
|
|
if (!(speed_up >= 0f))
|
|
{
|
|
speed_up = 0f;
|
|
}
|
|
}
|
|
if (!(speed_up >= 0f) && !(Time.time <= spu_t))
|
|
{
|
|
speed_up += sp_up / 2f;
|
|
if (!(speed_up <= 0f))
|
|
{
|
|
speed_up = 0f;
|
|
}
|
|
}
|
|
if (!(speed_y <= 0f) && !(Time.time <= spy_t))
|
|
{
|
|
speed_y -= sp_y;
|
|
if (!(speed_y >= 0f))
|
|
{
|
|
speed_y = 0f;
|
|
}
|
|
}
|
|
if (!(speed_y >= 0f) && !(Time.time <= spy_t))
|
|
{
|
|
speed_y += sp_y;
|
|
if (!(speed_y <= 0f))
|
|
{
|
|
speed_y = 0f;
|
|
}
|
|
}
|
|
if (!(speed_y <= -0.2f) && !(speed_y >= 0.2f) && !(Time.time <= spy_t + 0.2f))
|
|
{
|
|
speed_y = 0f;
|
|
}
|
|
float num = Mathf.Round(speed_side / 25f * 100f) / 100f;
|
|
float num2 = Mathf.Round(speed_up / 25f * 100f) / 100f;
|
|
float num3 = Mathf.Round(speed_forward / 25f * 100f) / 100f;
|
|
if (num != 0f || num2 != 0f || num3 != 0f)
|
|
{
|
|
transform.Translate(num * Time.deltaTime * 60f, num2 * Time.deltaTime * 60f, num3 * Time.deltaTime * 60f);
|
|
}
|
|
input = false;
|
|
}
|
|
|
|
public virtual void OnGUI()
|
|
{
|
|
}
|
|
|
|
public virtual void speed()
|
|
{
|
|
speed1 = Mathf.Round((transform.position - positionOld).magnitude) * 10f * 3.6f;
|
|
positionOld = transform.position;
|
|
}
|
|
|
|
public virtual void Main()
|
|
{
|
|
spf_t = Time.time;
|
|
sps_t = Time.time;
|
|
spu_t = Time.time;
|
|
}
|
|
}
|