ゾンビとUnityとUE4

ゾンビネタとUnity/UE4でのゲーム制作についてつづるブログです。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Unity 指定フレームでオブジェクトを等速直線運動させる

任意のオブジェクトを速度を全く変えず、二点間を指定フレームで移動させる。

using UnityEngine;
using System;

public class MoveAnime {
//Unity 指定フレームの指定距離内でオブジェクトを加速、減速させるのクラスに追加。
public static Vector2 GetDisplacement(Vector2 start, Vector2 end, uint frame) {
return new Vector2((end.x - start.x) / (float)frame, (end.y - start.y) / (float)frame);
}
public static Vector3 GetDisplacement(Vector3 start, Vector3 end, uint frame) {
return new Vector3((end.x - start.x) / (float)frame, (end.y - start.y) / (float)frame, (end.z - start.z) / (float)frame);
}
}

GetDisplacement() は、1フレームの移動量を返すので、毎フレームその移動量をプラスすればOK

using UnityEngine;
using System.Collections;

public class NewBehaviourScript : MonoBehaviour {

private const int _MAX_FRAME = 600;
private int _frame = 0;
private Vector3 _move;

// Use this for initialization
void Start () {
_move = MoveAnime.GetDisplacement(new Vector3(1, 2, transform.position.z), new Vector3(3, 4, transform.position.z), _MAX_FRAME);
}

// Update is called once per frame
void Update () {
if (_frame < _MAX_FRAME) {
transform.position = transform.position + _move;
_frame++;
}
}
}

プロジェクトを新規作成したら Directional Light を追加、Cube を (0, 0, 0) に配置して、その Cube に上記2つのスクリプトを追加すれば動くはず(Main Camera は一切いじらない)。
Cube が (1, 2, z) から (3, 4, z) に向かって、600フレーム(10秒?)かけて移動する。

関連記事

スポンサーサイト

- 0 Comments

Add your comment

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。