三流作家の雑記帳

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

再びUnityに

現在、制作中のゲーム? ですが、風向きが変わってきました。
と言うのも、頼みの綱であるsuzuka(gifアニメーションでFlashを作るソフト)が、何とWindows7に対応していないという。
一応、インストールは試してみましたが、エラーで出来ませんでした。
無理矢理動かす方法もあるようですが、フリーソフトなので将来的な事を考えると、他の選択肢に移らざるを得ません。

そこに、白羽の矢が立ったのが、Unity。
最後の講座を書いて幾星霜。
ずっと、起動すらしていなかったのですが、この度、最新の5.3をインストールしました。

Blenderで簡単なモーションをレンダリングしたので、それをパラパラ漫画のように表示させてアニメーションをさせるテストを、手始めに試してみました。

だが、しかし。
色々なサイトでやり方が書いてあったのですが、スクリプトがエラーになってしまいます。
というか、1枚絵すら表示出来ないという。

Unity5.0だからなのか、何か設定を間違えているのか。
何故なんだ、と2時間くらい悩みました。

原因はこれ。
unity5_3.png

起動時に選べたというorz
さすがにここまで初期段階のことは、何処にも書いてませんw
こんなところで2時間とか、前途多難にも程があります。

基本的に向いていないんですよね。
自分の意に反した作品を、苦手な分野で四苦八苦しながら作るというのは、ほんと吐き気を催してきます。
叶うことならば、のんびりと小説を書いて過ごしたいです。
しかし、運命が、宿業がそれを許してくれないので、やるしかありません。

それにしても、苦労して身に付けた技術は体が覚えていてくれると思っていましたが、完璧に忘れているというのは最大の誤算でしたw
知り合いのプロで、私のBlenderの師匠の方に泣きつく手もありますが、とりあえずアニメーションが出来るところまでは自力で何とかしてみたいと思います。

また、何か技術的な発見があれば、講座の方に追加していく予定です。
余り役に立たないレベルだと思いますが……。
  1. 2016/03/22(火) 23:36:20|
  2. Unity
  3. | トラックバック:0
  4. | コメント:0

1日15分でマスターするUnityトレーニング:第27回(タグ指定)

今回はタグを使って、処理を簡単に書くやり方をご紹介します。
何が簡単になるかは、実際にやりながらご説明します。
その方が分かりやすいと思いますので。

まず、タグ指定を使いたいオブジェクトを選んで、Tag欄をクリックします。
Unity27-1.jpg

下図の画面が出てきますので、名前を付けます。
Sizeは個数と思ってOK。
これを増やすと、Elementの数が増えていきます。
Unity27-2.jpg

先程のTag欄に付けた名前が増えているので、それを選びます。
Unity27-3.jpg

スクリプト側ですが、衝突判定で紹介したスクリプトを例に説明します。
こんなのがありましたね。
if(collision.gameObject.name == "Cube_001"){

これを下記のように変更します。
if(collision.gameObject.tag == "target"){

nameをtagに変えて、名前は先程のelementで付けたものにします。
変更はこれだけです。

テストしてみましょう。
Unity27-4.gif

もはや、何のゲームか分からなくなってきましたが、そこは触れないで下さいw

このボーリングのピンは、それぞれプレハブ化したものです。
全て同じタグなので、同じ衝突判定が発生します。
これをタグ指定しない場合は、Object.nameで3つ分の指定を書かないといけません。
例えばですが、敵に触れたらアウトというゲームなら、全ての敵のタグをEnemyとかにしておけば、一発で処理が出来るということですね。

簡単で応用が出来るテクニックかと思います。
衝突判定以外にも、色々使って効率よく制作を進めましょう。

それでは。
  1. 2014/08/23(土) 08:11:53|
  2. Unity
  3. | トラックバック:0
  4. | コメント:1

1日15分でマスターするUnityトレーニング:第26回(ランダム処理)

この処理を使っていないゲームは存在しないのではないか?
そう思えるほどの処理、ランダム処理についてご説明します。

実は以前にRPGを作っていた時、これを利用してエンカウント処理を実装したことがあります。
ランダム処理とか聞くと大変そうに思えるかもしれませんが、処理自体は全然大した事はありませんので、ご安心を。

まずは1つ変数を作ります。
名前は何でもいいですが、私はこのようにしました。
int bullet_type = 0;

この構文を置く場所はupdateやstart内ではなく、その外です。
=0で初期化もしておきましょう。


ランダム処理の構文はこちら。
---------------------------------------------------------------------------
bullet_type = Random.Range(0, 4);
  if(bullet_type == 1){
処理を書く
  }else{
処理を書く
  }
---------------------------------------------------------------------------

解説します。
色々とありますが、 Random.Range(0, 4);がランダム処理です。
()内で範囲を決めます。
この書き方だと数字が0~4の間で1つランダムで選ばれます。
つまり、範囲が広いほど確率が悪くなるということですね。
その数字をbullet_type =で、最初に宣言した変数へ入れます。

if文はその数字が1だったら、括弧内の処理、違ったらelse内の処理。
大抵はこんな実装になるかと思います。
これだと5回に1回、通常とは違う処理になるといった動きですね。

テストしてみます。
スライム弾をメタルスライム弾にしてみました。
Unity26-1.gif

成功です!
if内の処理にメタルスライムを発射、elseにスライムを発射する処理を入れています。
速度というか威力を10倍にして、エフェクトもちょっと変えてみました。
スライムではびくともしませんが、メタルスライムが数発当たると、ビルが吹き飛びますw
スライム同士がすり抜けるのは、全くもって謎。
ビルにぶつかるのだから、弾同士も衝突するはずなのですが……。

まあ、それはいいとして、ifを増やして3だったらスライムベス弾とかも発射可能です。
シンプルながらも色々と応用出来る処理ですね。

エンカウント処理に使うも良し、ダメージ判定の幅を決めるも良し。
上手に使って、皆さんのゲームを面白くして下さいね。

それでは。
  1. 2014/07/31(木) 19:58:36|
  2. Unity
  3. | トラックバック:0
  4. | コメント:0

1日15分でマスターするUnityトレーニング:第25回(衝突箇所にパーティクル)

前回、物体が衝突した箇所にパーティクルを発生させることが出来ない、と書きましたが、解決しました。
例によってこれが正攻法なのかは分かりませんが、ご紹介したいと思います。

やり方ですが、弾と同じようにプレハブ化した後にインスタンスを使って制御します。
この辺りは第20回をご覧下さい。

下図のようにパーティクルをプレハブ化します。
図はスライムをクリックした状態で、ご覧の通り、衝突スクリプトは弾であるスライムに割り当ててあります。
Unity25-1.png

スクリプトは衝突スクリプト内に追加します。
この前はぶつかったらパーティクルを再生、という処理でしたが、そこをプレハブの出現に変更します。
内容は下記の通り。

------------------------------------------------------------------------------------------
void OnCollisionEnter(Collision collision){
   GameObject explosion = (GameObject)Resources.Load("Particle_explosion");
if(collision.gameObject.name == "Cube_001"){
  GameObject new_explosion = (GameObject)Instantiate(explosion, transform.position, transform.rotation);
  explosion.particleSystem.Play();
       }
}

------------------------------------------------------------------------------------------

今までの講座と全く同じテクニックです。
Instantiate(explosion, transform.position, transform.rotation)内のtransform.positionはその場所で発生させると言う意味です。
こうしておくと、何故か衝突箇所でパーティクルが発生しますが、理由は不明w
口を酸っぱくして言っておりますが、結果良ければ……でございますw

テストしてみます。
ぶつかった際に弾を消していないのでシュールな映像となっていますが、そこは気にしないで下さい。
unity_.gif

スライムがぶつかった位置に爆発が起こっていますね。
成功です!

しかし、こんな大砲の移動ではゲームとして微妙ですね。
大砲の角度とかに合わせて発射が出来ればいいのですが、私の手には負えない処理でして……。
現状、打開策は全くありません。

奥から手前に敵を移動させて、それを迎え撃つゲームなら作れそうですが、面白いかどうかは保障出来ませんw
まあ、いつかは完成させたいRPGの為の勉強ですので、少しずつ頑張ります。

次は発射されるスライムをランダムでスライムベスに、何て処理を実装してみましょう。
ランダム処理はゲーム制作に必須ですので、避けては通れませんからね。

それでは。
  1. 2014/07/26(土) 09:04:59|
  2. Unity
  3. | トラックバック:0
  4. | コメント:0

1日15分でマスターするUnityトレーニング:第24回(衝突判定を行う)

さて、今回は衝突判定を実装方法をご紹介します。

衝突判定とは何ぞや、という方も居られると思いますので、軽く説明を。
例えば、スーパーマリオだと、クリボーを踏んだらやっつけることが可能ですね。
この時、マリオとクリボーが触れた瞬間に、衝突判定が行われています。
恐らくですが、横からぶつかったらマリオがやられて、上からだとクリボーがやられるという処理になっているかと。

Unityでもこのような実装が可能なのですが、スクリプトでの制御となってしまいますので、少々敷居が高いです。
が、いつも何かエラーが出て悪戦苦闘する私でも簡単に実装出来ましたので、ご安心下さい。

衝突させた後にどんな処理を発生させるかは、皆さんのゲーム次第になりますが、今回の例ではパーティクルを発生させるということで進めさせて頂きます。
まずはパーティクルを作成します。
Unity24-1.png

スクリプトを作成します。名前はこれでなくてもOKです。
作成したら、インスタンスの弾へドラッグ&ドロップします。
Unity24-2.png

先程作成したスクリプトに処理を記述します。
追加はこれだけです。
ただし、追加する場所はupdate内ではなく、その外にして下さい。

-------------------------------------------------
void OnCollisionEnter(Collision collision){
if(collision.gameObject.name == "Cube_001"){
GameObject explosion = GameObject.Find ("particle_explosion");
explosion.particleSystem.Play();
}
}

-------------------------------------------------
簡単ですが、解説をします。
衝突判定はvoid OnCollisionEnter(Collision collision)という記述内で行います。
ちなみに、試してはいませんが、下記のような処理判定が出来るようです。

OnCollisionEnter……物体同士が接触した時
OnCollisionExit……物体同士が離れた時
OnCollisionStay……物体同士が接触中

今回は接触した時なのでEnterを使いました。

処理の判定はif文で行っています。
if(collision.gameObject.name == "Cube_001"){}
これはCube001という名前のオブジェクトに触れたら、{}内の処理をするという意味になります。
他にもタグ名で指定したり出来るみたいですが、まずは決め打ちで。
また使う必要が出てきたら紹介したいと思います。

{}内の処理は前回と同じ、パーティクルを発生させるものです。

ではテストしてみましょう。
スライムがビルに触れた瞬間、パーティクルが発生しました!
Unity24-3.gif

どうですか。
思ったより、簡単でしたよね。

ただ、スクリプトが別になってしまったのが、無念。
1つのスクリプトで制御した方がいいと本職の人が言っていたので、余りよろしくない形かもしれません。
例によって結果が良ければ全て良し、で進めたいと思いますがw

ただ、これ、スクリプト発生箇所が決め打ちなのですよね。
スライムの着弾場所で発生させるようにしたかったのですが、スライムはインスタンスで発生させているので、座標とかをスクリプトで指定する必要があります。
少し触っただけですが、エラーで駄目だったので、またもや研究が必要のようです……。

弾がスライムである必然性は皆無になってしまっていますが、これで頭に描いているゲームの基本形は作れそうです。
次回は何をするか決めていませんが、また使えるテクニックがあればご紹介したいと思います。

それでは。
  1. 2014/07/05(土) 10:16:42|
  2. Unity
  3. | トラックバック:0
  4. | コメント:0
前のページ 次のページ

小説試し読み

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

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

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

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

Blender講座

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

Unity講座

最新記事

広告







月別アーカイブ

カテゴリ

未分類 (0)
雑記 (181)
小説 (29)
時事 (57)
ゲーム (75)
Blender (92)
競馬 (74)
映画 (34)
車/バイク (298)
狩猟/射撃 (96)
Unity (72)

検索フォーム

リンク

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