やますぎ絶記

日々の絶起を綴っていきます

Unity初心者がUnityを初めて触りました

!この記事にはUnity初心者が含まれています!

 

○がつ✕にち△ようび

てんき:はれ

 

きょうは、ゆにてぃをさわりました。

ちゅーとりあるようのしゅーてぃんぐげーむをつくりました。

f:id:zqi:20181221004134p:plain

完成品はこんな感じ

本当にUnity初めてなので基本はチュートリアルに書いてあるとおりにキー入力→オブジェクトの移動とか当たり判定とかを実装しただけです

 

独自で「スコア」っていう概念を作ろうと思ってPlayerクラスに「score」っていう変数を作ったのですが、初心者過ぎてどうやって他のクラスから変数を参照/書き換える???みたいになってしまいました

public int score = 0;

みたいに、まずはPlayerクラスで普通に変数を宣言する

Player scr;

呼び出したい別のクラスでPlayer型の変数作ってそこにPlayerのコンポーネント(?)をぶち込んだ

scr = GameObject.Find("Player").GetComponent<Player>();

こうすることで、「scr.score」みたいな形で変数を扱えるようになりました

 

当たり判定の重複

これで敵(Enemy)を倒したらスコアを増加させる、とやろうとしたところでなんか当たり判定が何重にも発生してるという問題が起きました。

当たり判定は

private void OnTriggerEnter(Collider obj){ }

みたいに実装していて、とりあえずデバッグ用にjsでいうconsole.logにあたるもので

Debug.Log("ぶつかったよ!");

ってやってみたら、無限に当たり判定をし続けてた(それはそう)

 

Enemyクラスにbool型の変数を用意して一回あたったらtrueにしてもう当たり判定しないっていうやり方で一応解決しました。

 

シーン遷移

Unityを初めて触るぼくは、シーンを作ってスタート画面を用意したいなと思いました。Startというシーンを作ってボタンを配置して、シーン遷移用のクラスを作ってそこに遷移のコードを

public void Move() {
    SceneManager.LoadScene("SampleScene");
}

って書くだけ、簡単ですね

 

あとはこのMove関数をボタンをクリック動作に割り当てるだけなんですけど、そこが何故か上手く行かなかったので今日はここまで、閉廷です

f:id:zqi:20181221011428p:plain

ここにMoveが出てきてくれない

 

初心者過ぎて多分支離滅裂なことを書いてるので有識者の方たすけて