Unityでゲーム開発をしているときの
あーこういうの欲しいな!を叶える、
知っていれば確実にゲームに彩りを加えられるメソッドを紹介します。
この関数では その名の通り、
0と「上下差」で指定した数値の間を、ピンポン球のように行ったり来たりする値を取得できます。
再生開始と同時に最初のアイテムボックスのy座標(_nowPosi_)を取得しておきます。
でないと、Mathf.PingPongだけでは
__(y座標) = 0 + (上下させたい値)__
になってしまうので、
オブジェクトをシーンビューでどのようにおこうとも
開始と同時にy=0の周辺で上下するようになってしまいます。
次に
取得したy座標にMathf.PingPongで上下させたい値を足します。
このように変えてみると
##PingPong関数
この記事で紹介するのは
ゲーム内によくある、上下にゆらゆら動いているアイテムボックスなどに使える
PingPong関数です。
Mathf.PingPong(時間, 上下差)
Mathf.PingPong(time.deltaTime, 10);
このようにすれば、0~10の値が返ってきます。
##アイテムボックスを動かす
上下に移動するアイテムボックスはy軸方向に動いているので
PingPong関数をy座標に使います。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class itemBoxScript : MonoBehaviour {
public float nowPosi;
void Start () {
nowPosi = this.transform.position.y;
}
void Update () {
transform.position = new Vector3(transform.position.x, nowPosi + Mathf.PingPong(Time.time, 0.3f), transform.position.z);
}
}
x座標、z座標には最初の座標をそのまま反映させましょう。
するとこんな感じ。
なんだか上下の動きが激しい気がするので
Mathf.PingPongのところを
Mathf.PingPong(Time.time/3, 0.3f)
ゆっくりになりました。
##まとめ
- 再生開始時の座標を取得する
- Mathf.PingPongはゆらゆら移動してほしい向きの座標に足す