unityでオブジェクトの座標を得る

前回まででボールの画像を回転させて移動させることができました。

これだけではボールは画面の外に飛び出して永遠に右方向に転がり続けます。

ボールのX座標を取得して条件式で画面の端までボールが転がると逆方向に転がるようにしたいと思います。

public class ballmove : MonoBehaviour { の下に色々追加します。

//ボールのX座標を入れる変数をフロート型で宣言。
float itiX = 0;

//GameObject型の変数 ballを宣言。この時点ではただの空箱
GameObject ball;

//ゲームシーン内にあるballというオブジェクトを見つけて代入。
//空箱を実体化

void Start () {
this.ball = GameObject.Find (“ball”);
}

//update関数内に色々追加。

//transformコンポーネントの位置情報positionに
//アクセスして座標情報をゲット
//itiXにballのx座標を入れる。

this.itiX = this.ball.transform.position.x;

//もし画面右からはみ出しそうになれば
//逆方向に移動させて
//回転も逆回転させる

if(itiX > 8) {
this.speed = -0.1f;
this.kaiten = 7;
}

//もし画面左からはみ出しそうになれば
//逆方向に移動させて
//回転も逆回転させる

if(itiX < -8) {
this.speed = 0.1f;
this.kaiten = -7;
}

スクリプトを保存してゲームシーン上の▶︎ボタンで動作確認。

ほほー

思い通りに動いているではありませんか〜 ^0^

ただ、なんかやり方が回りくどいような気がしないでも無いです^^;

もっと簡単な方法があるかもしれません。

コンポーネントはこれからよく出てくるみたいなので

しっかり勉強しておかないとわけがわからんなるかも。

transformはコンポーネントの1種で

コンポーネントとは設定資料のようなものだそうです。

transformコンポーネントは座標や回転、移動などの

動きに関する資料をくれるのね。

つまり

ball.transform.position.x

はオブジェクトballのx座標をくれ。と言っている。

コンポーネントを利用する際の正規の書き方は

GetComponent<??>()

と書く。

<>の部分は半角英数です。
ブログで書くとタグ扱いになって表示されないから全角で書いてます。

上のtransformコンポーネント使用も正しくは

GetComponent<transform>().position.x

となる
のかな。

ただしtransformは省略してそのまま使えるみたい。

次回はテキストのコンポーネントにアクセスして

文字を表示してみたいと思います。

—————————————
<広告>




コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です