Flatkit 추가 및 설정
This commit is contained in:
96
Assets/FlatKit/Demos/Common/Scripts/Motion/LinearMotion.cs
Normal file
96
Assets/FlatKit/Demos/Common/Scripts/Motion/LinearMotion.cs
Normal file
@@ -0,0 +1,96 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using Random = UnityEngine.Random;
|
||||
|
||||
namespace Dustyroom {
|
||||
public class LinearMotion : MonoBehaviour {
|
||||
public enum TranslationMode {
|
||||
Off,
|
||||
XAxis,
|
||||
YAxis,
|
||||
ZAxis,
|
||||
Vector
|
||||
}
|
||||
|
||||
public enum RotationMode {
|
||||
Off,
|
||||
XAxis,
|
||||
YAxis,
|
||||
ZAxis,
|
||||
Vector
|
||||
}
|
||||
|
||||
public TranslationMode translationMode = TranslationMode.Off;
|
||||
public Vector3 translationVector = Vector3.forward;
|
||||
public float translationSpeed = 1.0f;
|
||||
public RotationMode rotationMode = RotationMode.Off;
|
||||
public Vector3 rotationAxis = Vector3.up;
|
||||
public float rotationSpeed = 50.0f;
|
||||
public bool useLocalCoordinate = true;
|
||||
public float translationAcceleration = 0f;
|
||||
public float rotationAcceleration = 0f;
|
||||
|
||||
private Vector3 TranslationVector {
|
||||
get {
|
||||
switch (translationMode) {
|
||||
case TranslationMode.XAxis: return Vector3.right;
|
||||
case TranslationMode.YAxis: return Vector3.up;
|
||||
case TranslationMode.ZAxis: return Vector3.forward;
|
||||
case TranslationMode.Vector: return translationVector;
|
||||
case TranslationMode.Off:
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
|
||||
return Vector3.zero;
|
||||
}
|
||||
}
|
||||
|
||||
Vector3 RotationVector {
|
||||
get {
|
||||
switch (rotationMode) {
|
||||
case RotationMode.XAxis: return Vector3.right;
|
||||
case RotationMode.YAxis: return Vector3.up;
|
||||
case RotationMode.ZAxis: return Vector3.forward;
|
||||
case RotationMode.Vector: return rotationAxis;
|
||||
case RotationMode.Off:
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
|
||||
return Vector3.zero;
|
||||
}
|
||||
}
|
||||
|
||||
void Update() {
|
||||
if (translationMode != TranslationMode.Off) {
|
||||
Vector3 positionDelta = TranslationVector * translationSpeed * Time.deltaTime;
|
||||
|
||||
if (useLocalCoordinate) {
|
||||
transform.localPosition += positionDelta;
|
||||
}
|
||||
else {
|
||||
transform.position += positionDelta;
|
||||
}
|
||||
}
|
||||
|
||||
if (rotationMode == RotationMode.Off) return;
|
||||
|
||||
Quaternion rotationDelta = Quaternion.AngleAxis(
|
||||
rotationSpeed * Time.deltaTime, RotationVector);
|
||||
if (useLocalCoordinate) {
|
||||
transform.localRotation = rotationDelta * transform.localRotation;
|
||||
}
|
||||
else {
|
||||
transform.rotation = rotationDelta * transform.rotation;
|
||||
}
|
||||
}
|
||||
|
||||
private void FixedUpdate() {
|
||||
translationSpeed += translationAcceleration;
|
||||
rotationSpeed += rotationAcceleration;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user