カテゴリ: Unity



詳細なルールはこちら  。    
追加ルールはこちら



まずは GameDirectorクラス の GetApple() の this.point += 100; でやんすね。楽勝だね。this.point = this.point + 100; ってことだね。GetApple() が呼び出されるたびに this.point に +100 されてくっちゅうわけやね。



次、GetBomb() の this.point /= 2; 。イコール this.point = this.point /2; で、つまり GetBomb()が呼び出されるたびに this.point が半分になるっちゅうわけだ。



次、Start() の this.pointText = GameObject.Find ("Point"); 。一つ前のコードとほとんど同じだね。

| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
まずは start() の this.timerText = GameObject.Find("Time"); すね。Find() ってどっかで見たね。

〜〜〜省略〜〜〜

よくわかってないけど、フィーリングでオッケーぽいね。
__________| ここ

よしよし、よくわからんけど、オッケー。

 

次、this.pointText.GetComponent<Text>().text = this.point.ToString() + " point"; 。これも一つ上のコードとほぼ同じ。

| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
次、this.timerText.GetComponent<Text>().text = this.time.ToString("F1"); 。おっと長いね。

〜〜〜省略〜〜〜

なるほどすね。this.time には 59 が格納されてて、その桁数を小数点第一位まで丸めて返してくれるわけだね。んでそれが Textコンポーネントの text に格納されるってわけだ。
__________| ここ

this.point には現時点のポイントが格納されてて、それにプラス "point" って文字列を追加して Pointオブジェクトの Textコンポーネントの text に格納されるわけですな。






4/17の23:08
ゲーム開発関連の記事は今後ここのブログに書きます。



Unity学習 47

ーーーーーーーーーー



詳細なルールはこちら  。    
追加ルールはこちら



次はなんざますの?「ポイントUIの設定」ざます。

| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

〜〜〜省略〜〜〜


public class GameDirector : MonoBehaviour {


    GameObject timerText;

    GameObject pointText;

    float time = 60.0f;

    int point = 0;


    public void GetApple() {

        this.point += 100;

    }


    public void GetBomb() {

        this.point /= 2;

    }


    void Start() {

        this.timerText = GameObject.Find("Time");

        this.pointText = GameObject.Find ("Point");

    }


    void Update() {

        this.time -= Time.deltaTime;

        this.timerText.GetComponent<Text>().text = this.time.ToString("F1");

        this.pointText.GetComponent<Text>().text = this.point.ToString() + " point";

    }

}

__________|「Unityの教科書 Unity2017完全対応版」より引用して省略


太字がここのスクリプトへの追加。


| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

〜〜〜省略〜〜〜


public class BasketController : MonoBehaviour {


    public AudioClip appleSE;

    public AudioClip bombSE;

    AudioSource aud;

    GameObject director;


    void Start() {

        this.director = GameObject.Find("GameDirector");

        this.aud = GetComponent<AudioSource>();

    }


    void OnTriggerEnter(Collider other) {

        if(other.gameObject.tag == "Apple") {

            this.director.GetComponent<GameDirector>().GetApple();

            this.aud.PlayOneShot(this.appleSE);

        } else {

            this.director.GetComponent<GameDirector>().GetBomb();

            this.aud.PlayOneShot(this.bombSE);

        }

        Destroy(other.gameObject);

    }


〜〜〜省略〜〜〜

__________|「Unityの教科書 Unity2017完全対応版」より引用して省略


太字がここのスクリプトへの追加。んでもって実行。



リンゴを取るとポイントが増えて、



爆弾を取るとポイントが半分になりました。オッケー。




Unity学習 46

ーーーーーーーーーー



詳細なルールはこちら  。    
追加ルールはこちら



まずは start() の this.timerText = GameObject.Find("Time"); すね。Find() ってどっかで見たね。

| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
わかるようなわからんような。。

引数は "car" だから carオブジェクトを返すんだね。carオブジェクトを this.car に格納すんの?イミフじゃね?どうでもいいけどさ。。
__________| ここ

よくわかってないけど、フィーリングでオッケーぽいね。


Timeオブジェクト、あるね。そりゃあるけどさ。



次、update() の this.time -= Time.deltaTime; 。Time.deltaTime もよく見るね。つい最近見た気がするぞ。

| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
仮に1秒だとすると、this.delta += Time.deltaTime; はイコール this.delta = this.delta + 1; 。float delta = 0; なんだから this.delta = 0 + 1; ってことだね。
__________| ここ

オッケー。今回も仮に1秒だとすると、this.delta = this.delta - 1; 。float time = 60.0f; なんだから this.delta = 60 - 1; イコール this.delta = 50 ってことざんすね。



次、this.timerText.GetComponent<Text>().text = this.time.ToString("F1"); 。おっと長いね。

timerText には Timeオブジェクトが格納されてたんだから、それの Textコンポーネントの text にアクセス。


ありゃんすね。

ここに this.time.ToString("F1") を格納。ToString() と F1 が何者か?

| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Object.ToString
public string ToString();

説明
ゲームオブジェクトの名前を返します
__________| Unity公式ドキュメントのここから引用

| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
F, f (fixed-point/固定小数点)

・数値を10進数の固定小数点形式で表した文字列でフォーマットする。
・桁数が指定されている場合は、小数部が指定された桁数で0埋めしてフォーマットされる。
・桁数が指定されていない場合は、小数部がデフォルトの桁数でフォーマットされる。
・小数部をフォーマットする際に、省略される部分は四捨五入してフォーマットされる。
__________|「smdn」というサイトのここから引用

なるほどすね。this.time には 59 が格納されてて、その桁数を小数点第一位まで丸めて返してくれるわけだね。んでそれが Textコンポーネントの text に格納されるってわけだ。

ただ一つ疑問。「オブジェクトの名前を返す」って変じゃね?this.time の名前は「time」じゃないの?それを返すってイミフじゃない?名前を返すってさ。なんか変。上手く説明できないけど。

そもそも this.time はオブジェクトなのか?ただの変数なように思えるんだが。float型のさ。

なんかよくわからん。スルーだな。



Unity学習 45

ーーーーーーーーーー



詳細なルールはこちら  。    
追加ルールはこちら



やろう。本業。FXとか仮想通貨はあくまで副業。本業はこっち。ゲーム開発。

「制限時間UIの設定」ざますよ。

| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;  // UIを使う時は忘れないように注意!!


public class GameDirector : MonoBehaviour {


    GameObject timerText;

    float time = 60.0f;


    void Start() {

        this.timerText = GameObject.Find("Time");

    }


    void Update() {

        this.time -= Time.deltaTime;

        this.timerText.GetComponent<Text>().text = this.time.ToString("F1");

    }

}

__________|「Unityの教科書 Unity2017完全対応版」より引用


これを空オブジェクトにアタッチ、UIをいろいろ設定して、実行。



制限時間と獲得ポイントのUIが表示されました。



制限時間が減っていってるね。この段階ではまだポイントの変動はなし。オッケー。




Unity学習 44

ーーーーーーーーーー


詳細なルールはこちら  。    
追加ルールはこちら



タバコまであと 27時間!


次は何すかね?「落ちてくるアイテムの位置と種類をランダムにする」んですってさ。頑張りましょう!


| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class ItemGenerator : MonoBehaviour {


    public GameObject applePrefab;

    public GameObject bombPrefab;

    float span = 1.0f;

    float delta = 0;

    int ratio = 2;


    void Update() {

        this.delta += Time.deltaTime;

        if(this.delta > this.span) {

            this.delta = 0;

            GameObject item;

            int dice = Random.Range(1, 11);

            if(dice <= this.ratio) {

                item = Instantiate(bombPrefab) as GameObject;

            } else {

                item = Instantiate(applePrefab) as GameObject;

            }

            float x = Random.Range(-1, 2);

            float z = Random.Range(-1, 2);

            item.transform.position = new Vector3(x, 4, z);

        }

    }

}

__________|「Unityの教科書 Unity2017完全対応版」より引用


太字が追加コード。元は前回。実行。



リンゴと爆弾がランダムに落ちてくるようになった。オッケー。







14:40

まずは int dice = Random.Range(1, 11); すかね。Random.Range() とは?


| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

Random.Range

public static float Range(float min, float max);


パラメーター


説明

min (この値を含む) と max (この値を含む) の範囲のランダムな float 型の数を返します (読み取り専用)。


max は範囲に含まれるため、Random.Range( 0.0f, 1.0f ) は返り値として 1.0 を含みます。

__________| Unity公式ドキュメントのここから引用


これ見たことあるね。


| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

なるほどね。引数に渡した値の範囲でランダムな値を返してくれるんだね。


んでもって今回は int型だから max は範囲から除外されると。ってことは -6 から 6 の間の値が返されるんだね。今回は適当に 1 が返されたことにしよう。

__________| ここ


今回も int型だから 1 から 10 の間の値。適当に 2 ということにしよう。




次、if(dice <= this.ratio) 。ratio は 2 で初期化されてて dice には 2 を返したからイコール if(2 <= 2) で真。


実行文は item = Instantiate(bombPrefab) as GameObject; 。Instantiate() でボムオブジェクトをコピーだね。else だったらアップルオブジェクト。オッケー。







15:04

タバコまであと 26時間!


次は float x = Random.Range(-1, 2); 。わかるね。さっきやったもんね。-1 から 1 の間の値を返す。適当に 0 としよう。次の float z = Random.Range(-1, 2); も適当に 0 としよう。




次、item.transform.position = new Vector3(x, 4, z); 。もうわかるね。item には ボムオブジェクトのコピーが格納されてたんだから、そいつの座標情報に (0,4,0) を格納だね。


ってわけで ボムオブジェクトは 0,4,0 の座標に落ちてくることになるんだね。0,4,0 って真ん中のマスだろね。なんでかはわかるよね?


よしオッケー。終わり。








Unity学習 43

ーーーーーーーーーー

↑このページのトップヘ