読者です 読者をやめる 読者になる 読者になる

神様は有給消化中です。

技術ネタを書こうかな。時事ネタとか私生活ネタはうけないし。

【Unity5】ゆっくり動き始めて、ゆっくり止まる補間を実装する

カメラやキャラクターの移動で、以下のグラフのような補間を実装する方法を共有。ゲームで一番よく使う補間方法です。
正式名称(?)はEase-in, Ease-Outとのこと。
f:id:appleorbit:20151018205414p:plain


動き始めはゆっくりと、真ん中で最高速度になって、ゆっくり止まります。
具体的な式は以下のとおり。
f:id:appleorbit:20151018210139p:plain
t=0〜1の間で増える値(経過時間/待ち時間 など)

void Update () {
	float t = Mathf.Min (time / LEAP_TIME, 1f);
	float leapt = (t * t) * (3f - (2f * t));
	transform.position = Vector3.Lerp (startPosition, endPosition, leapt);
	time += Time.deltaTime;
}

private float time;
private const float LEAP_TIME = 2f;
private Vector3 startPosition;
private Vector3 endPosition;

ゲームプログラムの基本中の基本みたいです。