41 lines
1.2 KiB
C#
41 lines
1.2 KiB
C#
using UnityEngine;
|
|
|
|
namespace Artngame.TEM
|
|
{
|
|
public class TestSpin : MonoBehaviour
|
|
{
|
|
public GameObject spinSpehere;
|
|
|
|
public float rotationSpeed = 5f;
|
|
|
|
public float speedY = 1f;
|
|
|
|
public float radius = 15f;
|
|
|
|
private void Start()
|
|
{
|
|
Vector3 position = base.transform.position + Vector3.right * radius;
|
|
position.y = 0f;
|
|
spinSpehere.transform.position = position;
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
Vector3 position = base.transform.position;
|
|
Vector3 vector = position - base.transform.up * 100f;
|
|
Vector3 vector2 = position + base.transform.up * 100f;
|
|
float num = TornadoMath.CalculateProgress(vector, vector2, spinSpehere.transform.position);
|
|
Vector3 vector3 = num * (vector2 - vector) + vector;
|
|
float magnitude = (spinSpehere.transform.position - vector3).magnitude;
|
|
Vector3 normalized = (spinSpehere.transform.position - vector3).normalized;
|
|
spinSpehere.transform.position += (radius - magnitude) * normalized;
|
|
spinSpehere.transform.RotateAround(base.transform.position, base.transform.up, rotationSpeed * Time.deltaTime);
|
|
spinSpehere.transform.Translate(base.transform.up * speedY * Time.deltaTime);
|
|
if (num > 1f)
|
|
{
|
|
spinSpehere.transform.position = vector + Vector3.right * radius;
|
|
}
|
|
}
|
|
}
|
|
}
|