キノコが何か作るブログ

ゲーム・ドット絵・アプリなどを作ります

MENU

Unity2日目

1マス移動

transform.positionを使ってプレイヤーを1マスずつ移動させました。

f:id:mizukinoko:20201212121459g:plain

僕はぬるぬる移動するより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タブに何も表示されなくなるバグが起こりました。
f:id:mizukinoko:20201212220440p:plain

選択状態でフォーカスし直したら直ると思ったのでやりましたが直らず。
再起動したりもしましたがダメで、ダメ元でSceneタブを複製したら直りました。

このバグの解決にわりと時間を食ってしまいました。

InvokeReapeating

setIntervalみたいな関数ないのかなと思って探して出てきたのがInvokeReapeatingです。

引数に実行関数・開始時間・インターバル時間を入れると使えます。

f:id:mizukinoko:20201212212200g:plain

これでポーションが一定間隔で降ってくるオブジェクトを作りました。

ソースコードはこんな感じです。

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);
    }
}


少ないですが今日やったことは以上です。
また明日もがんばります。
それでは。

プライバシーポリシー