三流作家の雑記帳

三流作家、葉山洋三が日々感じたことを記すブログ

1日15分でマスターするUnityトレーニング:第21回(プレハブを出現させる)

エラー連発で苦労しましたが、前回やったプレハブをスクリプトで出現、削除することが出来ましたので、やり方をご紹介したいと思います。

プレハブの作り方は第20回を見て下さいね。
bulletという名前のプレハブを作ったものとして、説明していきます。
説明といってもC#なのでスクリプトの解説になってしまいますが……。

とりあえず、プレハブを出現させる部分だけ抜粋します。

---------------------------------------------------------------------------------------
//Update内の初めの方にこれを追加
GameObject bullet = (GameObject)Resources.Load("bullet");

//発射処理
if(Input.GetKey(KeyCode.Space)){
move_power+=2;
if(move_power > 20){
move_power = 20;
}
}

if(Input.GetKeyUp(KeyCode.Space)){
//Pos関係はプレハブ出現場所に使う
cannon_Pos = houdai.transform.position;
slime_Pos = cannon_Pos;
slime_Pos.x += 200f;
slime_Pos.y += 50f;
//この1文でプレハブが出現
GameObject new_bullet = (GameObject)Instantiate(bullet,slime_Pos,transform.rotation);
//プレハブに物理演算で力を加える
new_bullet.rigidbody.AddForce(move_power*100.0f,move_power*10.0f,0, ForceMode.Impulse);
//5秒後にプレハブを消す
Destroy(new_bullet,5);
move_power = 0;
}
---------------------------------------------------------------------------------------

ポイントの説明をします。
GameObject bullet = (GameObject)Resources.Load("bullet");はbulletというプレハブをbulletという変数に入れています。
紛らわしいですねw
最後の()内が作成したプレハブ名で、GameObject bulletのbulletは好きな変数名でOKです。

if(Input.GetKey(KeyCode.Space))内は、スペースキーが押されている間だけ、パワーを溜めます。
溜めすぎると凄いことになるので、if(move_power > 20)の部分で20で固定させています。

GameObject new_bullet = (GameObject)Instantiate(bullet, slime_Pos, transform.rotation);
Instantiateがプレハブを出現させる命令です。()内は出現させるプレハブ、位置、角度を設定しています。
transform.rotationはそのままって意味だと思います。
slime_Posだと変数宣言の関係でエラーが出るかもしれないので、transform.positionにすれば上手く行くはずです。

鋭い方はGameObject new_bulletでわざわざ変数に入れている意味が分からないと思ったかもしれません。
これはこの書き方でないとdestoryで消す場合にエラーとなる為です。

ちなみにnew_bulletは好きな変数名でいいのですが、
Instantiate(bulletのbulletは1番頭に書いてあるGameObject bullet = (GameObject)Resources.Load("bullet");の名前と一致させる必要があります。

new_bullet.rigidbody.AddForceは何となく分かるかと思いますが、直前で作った new_bullet に物理演算で力を加えています。
Destroy(new_bullet,5);はnew_bulletを出現から5秒後に消す命令です。

こんな感じです。
瞬間的にスライムが出現しているとか、溜め具合で弾の速度が変わっているのが確認出来ます。
unity21-2.gif

さて、これで理解出来ましたね。
嘘です。
さっぱり分からないと思いますw

職業プログラマーか理系脳の人以外、読むことすら苦痛なのではないでしょうか?
でも、こういうのをやらないとUnityは大したこと出来ないという……。

このまま続けていく意味があるか、正直疑問です。
限られた紙面で複雑なプログラムを上手く説明するというのは、かなり難しいです。
何と言っても、書いている人間が似非プログラマーですし。

分からない点や動かないとかがあれば、コメント下さい。
力及ばずとなるかもしれませんが、なるべく回答しますので。

ただ、私自身、壁にぶち当たっています。
と言うのも、上のスライム、実は大砲の動きに連動しておらず、決まった場所からしか発射されませんw
これを連動させるには、見ただけで知恵熱が出そうな数式が必要っぽいので、私の手に負えそうにありません。

また、ちょっと見栄えを変えるかもしれませんが、ご了承下さい……。
  1. 2014/05/30(金) 21:30:37|
  2. Unity
  3. | トラックバック:0
  4. | コメント:0
<<ITパスポート試験 | ホーム | IYH>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://8ayama.blog.fc2.com/tb.php/468-ab4ae465
この記事にトラックバックする(FC2ブログユーザー)

小説試し読み

販売している小説の冒頭部分です。PDFが開きます。

アルとフィルの大冒険 ~魔法の迷宮~
天賦の才

ご購入はこちらからどうぞ

アルとフィルの大冒険 ~魔法の迷宮~
天賦の才

Blender講座

選択すると、その記事へジャンプ出来ます。

Unity講座

最新記事

広告







月別アーカイブ

カテゴリ

未分類 (0)
雑記 (196)
小説 (29)
時事 (58)
ゲーム (76)
Blender (92)
競馬 (74)
映画 (35)
車/バイク (305)
狩猟/射撃 (98)
Unity (73)

検索フォーム

リンク

このブログをリンクに追加する