目次
Lerpとは?
transform.localPosition = Vector3.Lerp(スタート地点の座標, 目的地の座標, 移動量);
と入力すると、スタート地点から目的地まで移動量ずつ移動します
transform.localScale = Vector3.Lerp(最初の大きさ, 収縮した後の大きさ, 加減量);
と入力すると、最初の大きさから指定した大きさまで、数値が変わります
こんな風にある値からある値まで変化させる時に使います
アニメーションと似たようなことができます
収縮運動をさせる
以下のスクリプトを入力して、収縮運動をさせたいオブジェクトにつけます
入力するスクリプト
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Shrinkage : MonoBehaviour
{
private float SizeTimer;// 大きくするか小さくするか判断する変数
private float ShrinkageSpan = 2;// 収縮運動を実行する期間
// Update is called once per frame
void Update()
{
SizeTimer += Time.deltaTime;// SizeTimerを時間の経過分増加させる
// オブジェクトを大きくする処理
if (SizeTimer < ShrinkageSpan / 2)// もし、SizeTimerが実行期間の半分より小さいなら、
{
// Lerp(最初の値,変更後の値,変更するスピード)で最初の値から変更後の値まで変更するスピードで値を変更する
transform.localScale = Vector3.Lerp(transform.localScale, new Vector3(4,4,4), 0.1f);// 大きさを4倍にする ※元の大きさが1,1,1の場合
}
// オブジェクトを小さくする処理
if (SizeTimer >= ShrinkageSpan / 2 && SizeTimer < ShrinkageSpan)// もし、SizeTimerが実行期間の半分以上、かつ、実行期間より小さいなら、
{
this.transform.localScale = Vector3.Lerp(transform.localScale, new Vector3(2,2,2), 0.1f);// 大きさを元に戻す ※元の大きさが1,1,1の場合
}
if (SizeTimer >= ShrinkageSpan)// もし、SizeTimerが実行期間以上になったら、
{
SizeTimer = 0;// SizeTimerを0にする
}
}
}
テストプレイをしてみると
一定間隔で収縮運動をします
往復運動をさせる
以下のスクリプトを入力して、往復運動をさせたいオブジェクトにつけます
入力するスクリプト
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RoundTrip : MonoBehaviour
{
private float MoveTimer;// どっちに移動するか判断する変数
private float RoundTripSpan = 2;// 往復運動を実行する期間
// Update is called once per frame
void Update()
{
MoveTimer += Time.deltaTime;// MoveTimerを時間の経過分増加させる
//右に移動する処理
if (MoveTimer < RoundTripSpan / 2)// もし、MoveTimerが実行期間の半分より小さいなら、
{
// Lerp(最初の値,変更後の値,変更するスピード)で最初の値から変更後の値まで変更するスピードで値を変更する
transform.localPosition = Vector3.Lerp(transform.localPosition, new Vector3(4, 4, 0), 0.1f);// 4,4,0に移動する ※元の大きさが0,0,0の場合
}
//左に移動する処理
if (MoveTimer >= RoundTripSpan / 2 && MoveTimer < RoundTripSpan)// もし、MoveTimerが実行期間の半分以上、かつ、実行期間より小さいなら、
{
this.transform.localPosition = Vector3.Lerp(transform.localPosition, new Vector3(0, 0, 0), 0.1f);// 元の場所に戻す ※元の場所が0,0,0の場合
}
if (MoveTimer >= RoundTripSpan)// もし、MoveTimerが実行期間以上になったら、
{
MoveTimer = 0;// MoveTimerを0にする
}
}
}
テストプレイをしてみると
一定間隔で往復運動をします
これらで、動きのあるオブジェクトを作成して、ゲームを豊かにしてみてください♪
コメント