
TOSHICHAN
Unityでスクリプト&簡単な実装サイト
指定したオブジェクト位置まで移動させる(GameObject)
[SerializeField, Range(0, 10)]
//何秒後に到達するか
float time = 1;
private Vector3 endPosition;
[SerializeField]
//どこのポジションに移動するか
GameObject EndGameObjectPosition;
private float startTime;
private Vector3 startPosition;
void OnEnable ()
{
endPosition = EndGameObjectPosition.transform.position;
if (time <= 0) {
transform.position = endPosition;
enabled = false;
return;
}
startTime = Time.timeSinceLevelLoad;
startPosition = transform.position;
}
void FixedUpdate ()
{
var diff = Time.timeSinceLevelLoad - startTime;
if (diff > time) {
transform.position = endPosition;
enabled = false;
}
var rate = diff / time;
transform.position = Vector3.Lerp (startPosition, endPosition, rate);
}
//Sceneで線を可視化
void OnDrawGizmosSelected ()
{
endPosition = EndGameObjectPosition.transform.position;
#if UNITY_EDITOR
if( !UnityEditor.EditorApplication.isPlaying || enabled == false ){
startPosition = transform.position;
}
UnityEditor.Handles.Label(endPosition, endPosition.ToString());
UnityEditor.Handles.Label(startPosition, startPosition.ToString());
#endif
Gizmos.DrawSphere (endPosition, 0.1f);
Gizmos.DrawSphere (startPosition, 0.1f);
Gizmos.DrawLine (startPosition, endPosition);
}