Unity5で魔法陣を作ろう 基礎編 チュートリアル

お手軽魔法陣!
お手軽魔法陣!

Unityのパーティクルシステムは、設定項目が多いので項目を覚えるよりも、よくある仕組みを実際に作ってみながら覚えたほうが効率が良いです。今回は、パーティクルが螺旋で動く魔法陣を作成します。

仕組みは簡単

  • この魔法陣の仕組みは実は簡単です。
  • Worldの影響を受ける柱パーティクルを2つ用意する。
  • 魔法陣テクスチャをドロップして、魔法陣オブジェクトを作る。
  • 魔法陣オブジェクトの子要素として、柱パーティクルを配置する。
  • 魔法陣オブジェクトをアニメーションで回転させる。

作成チュートリアル

作成方法が分かったので実際に実装してみましょう。

magiccircle
Inkscapeで512×512で背景透過で作成したpng画像

 

プロジェクトの作成

まずは、ParticleSpiral02など適当な名前3D用プロジェクトを新規に作成します。そして、フォルダーをいくつか作成して、上記の画像などをTexturesフォルダーに配置します。上記魔法陣の画像は、背景透過のpng画像です。(このブログでは、透明の画像で魔法陣の線が白のため何も見えなくなるので、CSSを黒くしています。)

001

画像は、Texture TypeがTextureになっているので、[Sprite (2D and UI)]にして[Apply]で適用します。

002

Cubeを作成し、先ほどのMagicCircle画像をシーンにドロップします。

003

MagicCircleのRotationをx:90にして、Cubeの子要素にします。

004

色は、Sprite RendererコンポーネントのColorで変更できます。そもそも魔法陣の画像をライトグリーンにしてしまう方法などもあります。画像を白にしておくと、Unity側でいろんな色のパーティクルと組み合わせやすいです。

005

 

ぽわぽあしているパーティクルの作成

まずは魔法陣の近くのホタルのようなぽわぽあしたパーティクルを作成します。新たにParticle Systemを作成し、Particle Systemモジュールの各種値を変更します。

006

また、最後にフェードアウトするように小さく消えてほしいので、[Size over Lifetime](=生存期間中のサイズ)モジュールにチェックして、曲線を編集します。

007

実際に使ってみてもらえば分かりますが、ダブルクリックで点を新規に作成してそれを動かすことで曲線を動かせます。また右クリックから点の削除も可能です。

a07

この図の見方は、横軸が時間で、0.0から1.0で表現しています。つまり一番左がParticleSystem開始時で、一番右が終了時になります。縦軸はSizeを0.0から1.0で表しています。よって、上記曲線の場合は、開始時に1=100%の大きさで、終了時に、0=0%の大きさになるが、大きさは曲線の変化によって徐々に小さくなるようになります。

008

例えば、一番右の点を、縦軸の1.0に持ってくると、上記画像のように直線になります。この場合は、開始から終了まで、Sizeが1.0なので小さくなっていきません。実際に何回も試してみましょう。

a08
ぽわぽわパーティクルができた!

柱パーティクルの作成

010

Duration 放射する時間 1秒

Start Lifetime 生存期間 1秒

Start Speed 放射する速度 4

Simulation Spaceは、Worldに変更すると、移動したときにパーティクルが揺らぐようになります。魔法陣を回転させると、パーティクルも螺旋を描くようになります。

Emissonモジュールで、一度に放射する量を調整できます。Rate 100の場合は、一回に100個のパーティクルを放射します。

 

009

Shapeモジュールで、放射する形を変更します。初期設定では、コーン型(メガホンのような形や、傘のついた街灯)なので、Angle角度と、Radius半径を小さくして、棒状に放射するようにします。

最後に、[Size over lifetime]で、開始時のサイズを小さくし、途中大きくし、終了時に小さくするようにします。もう少し綺麗に変形すればろうそくの火のような感じにもできます。

これで柱パーティクルが1つ出来たので、コピーして位置を変更してもう1つ作ります。

011
テスト用にParticleSystemモジュールのLoopingをチェックして柱2つを表示

魔法陣を回転させる。

これはParticleSystemの仕組みではなく、単純なUnityのアニメーションです。

012

Animationビューを表示して、HierarchyからMagicCircleを選択すると、[Create]ボタンが表示されるので、これでアニメーションを作成します。

013

[Add Property]ボタンでRotationを選択して、1:00(終了時)を360の倍数にします。今回は360*2 = 720にしました。

014

これで、螺旋を描くパーティクルが作成できました。この時点でゲームをプレイしてみると、起動と同時にアニメーションが実行されるのが確認できます。最後にボタンをクリックしたときに発動するようにしてみましょう。

ボタンをクリックしたときに魔法を発動させる。

ボタンを押したときに、魔法陣を回転させて、パーティクルを一斉に起動したいのでC#スクリプトで制御します。これはMagicCircleオブジェクトの親のCubeに割り当てます。

016

ボタン作成

Hierarchyビューで右クリックして、[UI]->[Button]でボタンを作成します。

015

ボタンのクリック時にMagicCircleスクリプトのDoMagicが実行されるようにします。

017

アニメーション遷移の修正

018
状態遷移の完成図

まだ、Waitアニメーションがないため新規に作成します。これは何もしないアニメーションで、”DoMagic”トリガーが実行されるまでここで待機するために用意します。作り方は簡単で、MagicCircleオブジェクトをHierarchyビューで選択して、[Create New Clip…]で作成します。以下のGifは既にWaitアニメーションを作成した後に、キャプチャーしたので、リストにRotate,Wait,Create New Clip…と並んでいますが、まだ作っていない場合は、リストにはRotate, Create New Clip…となっています。

a09

[Add Property]でPositionなどなんでもよいので選択して追加します。ただ待機用に用意したので値は変更しません。

019

トリガー作成

a10

トリガーは銃の引き金と同じで、これを実行するとアニメーションを実行するようにするフラグにします。C#スクリプトでは、GetComponent<Animator>().SetTrigger(“トリガー名”);のようにすれば、スクリプトから操作できます。そのためボタンを押したタイミングでこのスクリプトを実行すればアニメーションを動かせます。

上記のGifでは、新規にHelloTriggerトリガーを作成しましたが、DoMagicトリガーを新規作成すればよいです。

[Set as Layout Default State]により、起動時にWaitアニメーションが呼ばれて何もアニメーションしないようにします。

a11

あとは、Waitステート、Rotateステートを右クリックして[Make Transition]を選択すると、線を引けるようになるので、上記のようにRotateからWait,WaitからRotateに遷移できるようにします。

Wait->Rotate Transitions

021

[Has Exit Time]をチェックしないと、Waitアニメーションの終了を待たずにRotateへ遷移します。またConditionsにDoMagicトリガーを指定し、DoMagicトリガーが有効になったとき、Rotateアニメーションへ遷移します。

Rotate->Wait Transitions

022

こちらは特に細かい指定は合ってもなくてもよいです。

最後に、すべてのParticle SystemのParticleモジュールの[Play On Awake*]項目のチェックを外します。これは、最初に外しておくべきですが、このチュートリアルの画像では外すのを忘れてしましました。これを外しておかないと、ゲーム開始時に必ずパーティクルが実行されてしまいます。

完成

a12

このプロジェクトの配布

Unity5.4

http://hajimete-program.com/games/ParticleSpiral.zip

エクスプローラーからMain.unityをクリックして、Unityを起動すれば、Mainシーンが表示されます。またこの記事と箱となり、プロジェクトのボタンの位置やボタン名など若干変更しています。

 

 

 

 

unity5で魔法陣を作ろう-xoctomanx編

Unityのライティングの学習 Part3

Unityのライティングの学習 (Part1, Part2)で、GIを設定するための基礎知識を学び、また自分で試行錯誤するためのサンプルプロジェクトを作成しました。今回は、このサンプルプロジェクトに実際に各種設定を行い、GIを体験しましょう。

まずは、Part1で学んだ以下を再確認しましょう。

  • GIは、反射光を考慮します。
  • GIは、初期設定で有効です。
  • GIは、静的オブジェクトが対象なので、チェックが必須。
  • GIは、焼き作業が重いので、Resolutionパラメータを要調整。
  • Lithtオブジェクトは、とりあえずmixedに

手順としては、動かないプリミティブをすべて静的オブジェクトにします。次に、Resolutionパラメータを小さくしておきます。最後にLightをmixedにします。

1.プリミティブオブジェクトを静的オブジェクトにします。

プリミティブオブジェクトを選択して、右上の[Static]にチェックを入れるだけです。

 

001
複数選択して、Staticにチェックを入れている例

2. Resolutionパラメータを小さくします。

メニュー->Window->Lighting(下から6番目ぐらい)を選択して、Lightingタブを表示して、Precomputed Realtime GIとBaked GIのResolutionを0.5~1ぐらいにします。

002

初期設定では、[Auto]チェックボックスにチェックが入っているので、自動で焼き処理が開始されます。遅い場合は、[Auto]のチェックを外してキャンセルしてしまいましょう。そしてResolutionを調整し、[Build]するか、[Auto]のチェックを付けましょう。

003

 

3.LightのBakingをmixedにします。

2をやった時点ですでにGIはできています。そのためこのBaked GIにかかわるこの設定はどういう意味か私自身もう一度調べる必要があります。いずれにせよ、一度mixedにしてみましょう。ポイントライトとDirectional Lightの両方に以下設定をしました。

004

 

4.Lightingタブ

現在のLightingタブです。

006

結果

赤い箱に近い地面の色は赤くなって、青い箱の近くの地面の色は青くなっています。

005
GIができた!
007
立方体が微妙な色になっている。

ただ、解像度が低い設定影響か分かりませんが、立方体の黒い影が微妙な色合いでした。とはいえ、今後設定項目を調べていけばよい話なので今回はこれで良しとしましょう。

このプロジェクトの配布

Unity5.4

http://hajimete-program.com/games/SandboxLighting02.zip

まとめ

3回にわたりGI(Global Illumination、グローバル・イルミネーション)の基礎から実際に試行錯誤できるプロジェクトを作成しました。今後は、公式マニュアルとGoogle検索を活用して、設定項目の意味を調べていきましょう。

Unityで雪パーティクルエフェクトを作成しましょう。

Unityにはパーティクルシステムがあるので、Unityエディター上でパーティクルを作成できます。設定項目が多いので、項目はたくさん作って覚えていくしかありませんが、雪のパーティクルはいろんな項目を使って作れるので初心者に最適です。

まずは作ってみよう。

hierarchyビューで、右クリックして、Particle Systemでオブジェクトを作成します。パーティクルはデフォルトが横向きなので、Rotate Xを-90にしておきます。

hierarchyビューで右クリックして、ParticleSystemを選択
hierarchyビューで右クリックし、ParticleSystemを選択
Rotate Xを-90
Rotate Xを-90

Particle System

基本設定はいろいろ修正しても問題ありませんが、Gravity Modifierで、重さが決まるので、ここをいろいろ調整しましょう。ふんわりした感じがほしいのでひとまず0.13にしました。

001

Emission

Rateは一度に降る量です。

002

この項目を増やすときは、1つ注意が必要です。Sceneビューで以下のようなダイアログがあるので、Pause(一時停止)またはStop(停止)をしてから修正しましょう。例えば、30から間違えて3万にした場合、かなり強力なPCでないとUnityがフリーズ状態になり数分しないと応答が返ってこない状態になります。

012

Shape

Radiusで、この円内に雪を降らせます。

003

Velocity over Lifetime

生存時の速度。以下のように、X,Y,Zの速度調整ができます。前後左右にゆらゆらしたいので、XY座標はある一定のランダムの値を取らせたいです。そのような場合は、右の▼をクリックして、Random Between Two Curvesを選択します。

004
▼で、Random Between Two Curvesを選択

画面右下に、以下のような曲線(Curve)が表示されます。線上で、右クリックで、Add Keyを表示して追加するか、線上でダブルクリックをすると、キーが用意されます。これはキーボードのDeleteキーで削除できます。

005
右クリックして、コンテキストメニューからキーを作成できる。

このキーを上下左右に動かす事で曲線を作成します。

a03
曲線を作成している様子

X座標は、この上部、下部の2つの曲線内の値をランダムに取るため、雪が左右に揺れることになります。Y座標も同様に適当に曲線を用意します。

006

 

Color over lifetime

生存時の色。カラーバーをクリックすると、以下のGradient Editorが表示されます。画像の赤枠内はアルファチャンネルで、クリックすると矢印が追加されます。Deleteキーで削除できます。矢印を用意したら、Alphaを0-255に設定します。

今回は設定しませんでしたが、画像の緑枠内は、カラーで、ここもクリックして矢印キーを追加して、Deleteキーで削除できます。こちらの矢印を選択するとカラーが表示されるので、そこから色を変更できます。これにより、白から赤へのグラデーションなどを作成できます。

007

Size over Lifetime

生存時の大きさ。これも雪のふわふわした感じを作るために、2つの曲線で適当にキーを用意して作ります。

008

Rotation over Lifetime

生存中の回転。雪のテクスチャに大きな結晶画像などを使う場合は、Random Between Two Curvesで、いろんな動きにすると面白いはずです。今回はCurveで1つの曲線に適当にキーを用意しました。

009

Collision

今回はPlanesに何も指定してませんが、ここに対象を指定したりするとそこでとどまったりします。例えばGroundを用意してそのオブジェクトを指定すれば、そこに衝突します。Bounceは小さくしないと、ボールのように跳ねてしまいます。

010

Renderer

Materialで任意のマテリアルを設定できますが、今回は初期設定のままです。

011

完成

a05

 

公式ドキュメント

Unity パーティクルシステム(Shuriken)

このプロジェクトの配布

Unity5.4

http://hajimete-program.com/games/ParticleSnow.zip

まとめ

今回は、細かい説明をせずに、まずは作ってみました。パーティクルシステムは項目が多いため、人が作ったものを自分で同じように複製して見たり、繰り返し項目を変更していくと自然と項目がわかってきます。スタンダードアセットの爆発パーティクルなどは複数のパーティクルを組み合わせて1つの爆発にしているので非常に参考になります。

Unity5でクラッシーロードのようなIsometric(アイソメトリック)な画面の作成

クラッシーロードのような画面はISOMETRIC(アイソメトリック)と呼ばれ、日本語では等角を意味します。Unity5では位置と回転を調節するだけで、2,3分で簡単にIsometricなカメラを作成することができます。それではやってみましょう。

001

 

1.GameObjectを作成し、RotationをX:30,Y:45にして、Main Cameraを子要素にする。

002

2.Main CameraはPositionをX:0,Y:0,Z:-10にして、ProjectionをOrthographicにして、お好みでSizeを調整します。

003

できた!!

004

 

Perspectiveカメラで同じような感じを出してみる。

1.GameObjectを作成し、RotationをX:45,Y:45

101

2.Cameraを子要素にして、Position Z:-45、Projection:Perspective, Field of View を 30以下。

102

等角ではない感じですが、Perspectiveカメラでも近い感じにできました。もしかするとPerspectiveでももっと等角にできる正確な値があるのかもしれません。

103

 

参考資料

http://answers.unity3d.com/questions/12027/how-to-do-a-camera-that-is-top-downisometric.html

 

このプロジェクトの配布

http://hajimete-program.com/games/Isometric.zip

 

Unity5でTPSやトップダウンで弾を打つ方法

Unityは物理演算を使った方法や使わない方法で、物体を移動または回転させられるので初心者からするといろんな方法がありすぎて、人によって書き方が違い学ぶのが大変です。

今回は、先日試してみたSebastian Lagueさんの動画チュートリアル「Create a Game (Unity 5)」から、プレイヤーがマウスカーソルに向いて、弾を打つというロジックのみを切り出して1つのプロジェクトにしてみました。

移動方法

移動方法は、Input.GetAxisRawでキー入力を受け付けて、ローカル変数moveVelocityに値を保持します。

実際に移動する部分は、FixedUpdateメソッド内になります。AddForceもありますが、MovePositionを使うと補完されるのでなめらかに処理ができるそうです。

プレイヤーの向き

プレイヤーをマウスカーソルに向かせるには、以下の手順が必要になります。

  1. カメラからマウスカーソルへの光線を用意する。
  2. 地面に上記光線を投射(Raycast)して、地面に当たった時の、光線の距離(長さ)を求める
  3. 光線と長さから、ワールド座標上の地面のポイントを求める。
  4. そのままプレイヤーの向きを地面のポイントに向けると、下を向いてしまうのでプレイヤー自身のY座標を使う。
  5. プレイヤーを4で求めたポイントに向ける(LookAt)

また配布するソースコードでは、デバッグ情報として、光線Rayを黄色で表示、プレイヤーから地面のポイントへの向きベクトルを黒線で表示、プレイヤーの高さに補正したベクトル(つまり今向いているところ)を灰色で表示できるようにしました。これらはDebug.DrawLine(開始ポイント、終了ポイント)関数で実装しています。

001

Raycastで地面の座標を求めるだけでは下を向いてしまうので、高さをプレイヤーの高さに修正するのが大切です。(青色Z軸=画像では灰色の線)向きが正しくなったのであとは、その方向に弾を飛ばすだけです。

LookAtでプレイヤーの向きが変わるということは、青軸Z軸が変化したことです。Vector3.forward(向き)で取得できます。ちなみにVector3.upで緑軸Y軸、Vector3.rightで赤軸X軸です。

002

弾の発射口(マズル・Muzzle)をプレイヤーオブジェクトの子要素に用意すれば、当たり前ですが、この発射口はプレイヤーに追随して同じ向きに回転します。そのため、弾を発射するときには、このマズルの位置と回転情報で、インスタンス生成をします。

 

弾が飛ぶ仕組み

弾はそのまま重力を無視して飛ぶようにしています。そのためmuzzle.rotationで設定した初期の向きが、弾の向きになるので、その方向に飛び続けるようにします。ソースコードとしては、Vector3.forward(向き)に速度を加えるだけなので簡単です。

 

このプロジェクトの配布

http://hajimete-program.com/games/Topdown Shooting A01 Shot.zip

まとめ

今回は、プレイヤーの向きをマウスカーソルに向けて、弾を発射させました。単純にRaycastで向きを変更するとプレイヤーが地面を向いてしまうので、Y座標を補正する方法も学びました。ゲームの動画チュートリアルではいろんなゲームロジックが混在して複雑になるので、機能の的を絞って、簡単なプロジェクトを作成すると理解が深まります。

 

MagicaVoxelの簡単な操作方法チュートリアル

MagicaVoxelは簡単に3Dボクセルを作成できますがUIが独特です。はじめての方向けに基本操作とUI、Unityで取り込める方法まで説明します。詳細な操作方法が知りたい場合は以下を参考にするとよいです。

ダウンロードと起動

https://voxel.codeplex.com/ にダウンロードボタンがあるのでダウンロードして、zip展開したら、MagicaVoxel-win.exeがあるので起動できます。

新規作成、保存、リネーム

001

起動して、上部中央にnameと表示されるのでここでリネームができます。また、はじめて起動したときにnameを修正してフォーカスを外すと保存ダイアログが表示されます。試しにzzzで保存してみます。MagicaVoxel-0.97.4\Voxフォルダー内にzzz.voxが保存されるようにダイアログが表示されるので保存します。

002

voxフォルダーに保存されると以下のように、右側の一覧に表示されるようになります。この右側はVoxフォルダー一覧で、上部の[Save]で保存、[As]で名前を付けて保存、[New]で新規作成になり、下部のゴミ箱アイコンで削除できます。リネームは先ほど入力欄で可能です。

003

また、MagicaVoxelはあらかじめいくつかサンプルモデルがあります。一覧からクリックするとロードできるので、chr_oldをクリックして、サンプルキャラクターを表示して、z_chr_oldに名前を変更します。

004

これで新規登録や名前変更、保存は右側でできるようになりました。もし初期サンプルを壊してしまった場合は、もう一度MagicaVoxelをzip展開すればよいと思われます。

パレットの表示とエッジとグランド

005

左側がパレットになります。最初は菱形マーク(カラーパレット)が選択されている状態です。(見た目では選択状態が判断できないです。)この上部の[N]で新たなパレットを作成でき、[1][2]でデフォルトにある、グレースケールパレットなどに切り替えられます。はじめは特にパレットを追加する必要はないでしょう。

それで、左の[E]、[G]というのが、エッジとグランドです。グランドは地面の色です。変更したい場合は、パレットで色を選択した後に、[G]をクリックです。エッジは、ボクセルの現在の色です。これもパレットを選択した後に[E]をクリックです。パレットの色を[E]に割り当てるという考え方です。

1つ1つ追加したり削除したり

パレットでエッジの色を選択する方法がわかったので、あとは1ボクセルごとに追加、削除ができれば一通りの作業ができます。

1ボクセルごとに修正する場合は、Brushメニューから[V]を選択し、[Attach]で追加できます。以下の例では爺さんキャラクターの頭を何回かクリックして髪を増やしました。

006

削除は[Erase]を選択すればできます。

007

[Paint]は、選択している色で塗ることができます。

[Move]は、つながっているボクセルをドラッグアンドドロップで移動できます。

[<]は、カラーピックアップです。

[>]は、モデルの同じ色の一括変換です。

ひとまずこれだけ分かればモデルが作成できます。

ボクセル最大サイズの変更

008

ボクセルの最大サイズが上記で、X=20, Y=21, Z= 20となっているので、値を変更してフォーカスを外すと、サイズが変更できます。

エクスポート

009

モデルを作成後、いくつかの形式でエクスポートできます。.objファイルで出力すれば、UnityやBlenderなど3Dモデリングソフトで取り込めます。操作は簡単で、[Export]タブをクリックして、[obj]ボタンをクリックで「名前を付けて保存」ダイアログが表示されるので、「保存」ボタンを押して終了です。010

Unityへの取り込み

011

Exportで出来たファイルを、Unityにドラッグアンドドロップすれば、Unityで表示できます。

012

まとめ

はじめての人向けにとりあえずの操作方法を説明しました。あとはいくつか便利機能があるので少しづつ覚えていきたいところです。またMagicaVoxelはアニメーションには対応していないので、Blenderなどでアニメーションをつければ、面白くなりそうです。

Unity5.3 WheelCollider チュートリアルで正しく動かす方法

公式の「WheelCollider チュートリアル」でプログラミング初心者が正しく動かせるようにする補足チュートリアルです。「Unityで車を動かしたい その1」ではUnity公式マニュアル内のWheelCollider チュートリアルを試しましたが正常に動作しませんでしたが、いろいろ試したところ動作するようになったので公式マニュアルの補足を説明します。公式マニュアルとこの補足資料を確認しながら作業するとWheelColliderを使えるようになるはずです。

フィールド作成

まずは、公式チュートリアル通りに、フィールド作成します。適当にマテリアルをつけてもよいでしょう。

車の作成とWheelColliderの設定

次に単純な車を作ります。以下は抜粋ですが、ホイール作成部分の文章が文字化けしています。

最初のホイールの作成。wheelsオブジェクトを選択して、GameObject -&gt、名前を frontLeft にします。トランスフォームを初期化してください。ポジションを(–1, 0, 1)に設定してください。ホイールに Physics component -> wheel collider で追加してください。

wheelsオブジェクトを選択して、Create Empty Childで、GameObjectを作り、frontLeftにすればよいです。

A02

あとは手順通りに車を作ります。フィールドに緑のマテリアルをつけて、車に赤のマテリアルをつけました。

001

スクリプトの作成と割り当て

SimpleCarController.CSを書いて、car_rootに割り当てます。

002

車は、Y軸を0.8ぐらい(これは浮いていれば適当でよいです。)にします。

Massは1500Kg

Unityエディターで、Axle Infos Size を2にすると、各要素の入力項目が現れるので、上記画像のように割り当てます。この時点で、プレイするとタイヤは表示されませんが、WheelColliderが問題なく動作します。

A03

ビジュアルホイール(タイヤ)をつける

最後に、タイヤをつけますがまずは、WheelColliderの位置と回転をビジュアルに伝えるためにソースコードを修正します。

公式マニュアルと違うところは、動作中(プレイ中)常に、z軸90度の回転を追加しているところです。

これがないとタイヤが正常に回転しません。このコードは、ちゃんと作りこまれた3Dモデルの場合は必要ないかもしれませんが、少なくとも今回のような簡単な車の場合は必要になります。

ビジュアルホイールの取り付け方

WheelColliderの子要素として、[3D Object]->[Cylinder]を追加します。Scaleはお好みですが、とりあえずx:1,y:0.1,z:1で良いでしょう。

003

また、Capsule Colliderを無効または削除します。WheelColliderがサスペンションやタイヤの方向、回転をすべて制御します。そのため同じ大きさのコライダーがついていたりすると、WheelColliderは車の重さ(1500kg)によりサスペンションが沈むため、WheelColliderが判定できずに、Capsule Colliderが地面と接触することになり動かなくなります。

004

現在表示は上記の画像のようになっているはずです。再生(プレイ)ボタンを押すと、C#スクリプト内で毎回ApplyLocalPosiitonToVisualsが呼ばれるため正常に表示されます。初期表示を修正したい場合は、TransformのRotationのZ軸を90にすればよいでしょう。

Cylinderの名前をTireにして、マテリアルで黒くして、RotationのZ軸を90にして、走らせてみました。ホイールビジュアルであるタイヤが動いているのがわかると思います。

A04

 

このプロジェクトの配布

http://hajimete-program.com/games/HelloWheelCollider2.zip

まとめ

ひとまず簡単な車を作ることができました。こういう小さなモデルならたくさん用意できるので100台のAIでレースとかやてみたら面白そうです。また、Unity5のStandardAssetで、車を動かしてみよう では標準アセットを使った車のチュートリアルも公開しています。ぜひ確認してみてください。

Unity5のStandardAssetで、車を動かしてみよう

UnityはStandardAssetを使えば、C#スクリプトを使わずに車を走らせることができます。アセットの使い方の勉強にもなるので早速やっていましょう。

新規プロジェクト作成

適当に「HelloStandardAsset02」というプロジェクトを作ります。

001

プロジェクトにアセットのImport(インポート・取り込み)

メニューから[Assets]->[Import Package]->[Vehicles]をクリックします。Vehiclesは、ビークルスで乗り物です。

002

Import Unity Packageダイアログが表示されるので、Importをクリック。

003

 

Prototypingの取り込み

坂や階段やフィールドや壁もPrototypingという名前で、スタンダードアセットにあるので、これを使ってみましょう。

メニューから[Assets]->[Import Package]->[Prototyping]をクリックします。

005

以下ダイアログが表示されたときに、CrossPlatformInputのチェックが外れていますが問題ありません。Vehiclesをインポートした時にCrossPlatformInputはプロジェクトに取り込まれたので、今回はUnityが重複の確認をして自動でチェックを外してくれました。Importをクリックです。

006

 

Prototyping(プロトタイピング)を使って適当にフィールドや箱を配置する

A01

Assets/Standard Assets/Prototyping/Prefabsから適当にHierarchyタブにドラッグアンドドロップします。Inspectorタブに形状が表示されるので、とりあえずなんでもよいので配置しましょう。

A01

位置の調整

Scene(しーん)タブで位置調整をします。

A02

微調整は、InspectorタブのTransformコンポーネントのPosition(ぽじしょん・位置)で設定できます。

007

 

車の配置

車は、CarプレハブファイルをHierarchyタブにドラッグアンドドロップして、Main CameraをCarへドラップアンドドロップします。

A03

位置調整

Unityはいろいろ配置などをしていると、全く意図しない位置に配置される場合があります。CarのPosition(ぽじしょん・位置)が、x=0,y=0,z=0であることを確認しましょう。

008

また、Carの子のMain Cameraも調整しておきましょう。以下はとりあえず適当に車の後ろから車が映るようにしました。運転席付近にカメラを配置したりすると臨場感が出ます。

009

 

これで作業は完了です!!驚くべきことにC#スクリプトを書かずに作業がしてしまいました。

テストプレイ

やったー!動いたーー!!

A04

 

まとめ

StandardAssetを使うことで、プロトタイプで、障害物やフィールドを配置し、車を走らせることができました。

補足:重要なこと

まだC#スクリプトを使ってないのですが、私たちはいま、実際に正常に車が動作しているプロジェクトとソースコードを手にしました。Standard Assets/Vehicles/Car/ScriptsにC#スクリプトもあります。

010

自分で車のゲームを作る場合に、このソースコードがどうなっているかを調べていけばよいのです。プログラムがわかってくると、ソースコード上で一時停止して値を確認したり、ソースコードを書き換えることができるようになります。また、簡単なプロジェクトなので、失敗したらもう一度、数分でプロジェクトを作り直せます。複雑なプロジェクトもよいですが、このような小さなプロジェクトで素早くトライ・アンド・エラーを繰り返すことも重要です。