目次
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にする } } }
テストプレイをしてみると
一定間隔で往復運動をします
これらで、動きのあるオブジェクトを作成して、ゲームを豊かにしてみてください♪
コメント