1マス移動
transform.positionを使ってプレイヤーを1マスずつ移動させました。
僕はぬるぬる移動するより1マスずつ動くゲームが好きなのでこうしました。
transform.position
これマジでなんやねんって思いました。
というのも、transform.positionは直接値を書き換えられない仕様があるんです。Vector3 pos = this.gameObject.transform.position; //これOK this.gameObject.transform.position = Vector3(pos.x + 48, pos.y, pos.z); //これはダメ this.gameObject.transform.position.x = pos.x + 48;
マジかって思いましたね。
まあ公式ドキュメント見てない僕が悪いんですが、でもUnityのドキュメントってデフォルトの表示サイズがバグってるのでめんどくさいんですよね。だから見たくない。バグ
Sceneタブに何も表示されなくなるバグが起こりました。
選択状態でフォーカスし直したら直ると思ったのでやりましたが直らず。
再起動したりもしましたがダメで、ダメ元でSceneタブを複製したら直りました。
このバグの解決にわりと時間を食ってしまいました。
InvokeReapeating
setIntervalみたいな関数ないのかなと思って探して出てきたのがInvokeReapeatingです。
引数に実行関数・開始時間・インターバル時間を入れると使えます。
これでポーションが一定間隔で降ってくるオブジェクトを作りました。
ソースコードはこんな感じです。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Potion : MonoBehaviour { // Start is called before the first frame update void Start() { InvokeRepeating("MovePotion", 0.0f, 1.0f); } // Update is called once per frame void Update() { } private void MovePotion(){ Vector3 pos = this.gameObject.transform.position; this.gameObject.transform.position = new Vector3(pos.x, pos.y - 1, pos.z); } }
少ないですが今日やったことは以上です。
また明日もがんばります。
それでは。