スポンサーリンク

Unity実習31、2Dゲームを作ってみよう その3

SnapCrab_NoName_2016-6-21_12-10-41_No-00.jpg

前回キャラが動いたので、ドラゴンの作業に入っていきます

ドラゴンが大きいままなので、プレイヤー同様TransformのScale X , Y を0.5にします

火の玉を表示、落下させる
ProjectからAssets/Image/Fireを選択
InspectorでSpriteMode: Multipleに変更
SnapCrab_NoName_2016-6-21_10-29-22_No-00.jpg

Sprite Editorを起動して、Sliceの設定を
Type: Grid By Cell Size
Pixel Size: X:128 Y:128
Pivot: Center
SnapCrab_UnityEditorInternalSpriteEditorMenu_2016-6-21_10-30-51_No-00.png

設定したらSliceを押してスプライトを切り出し
左から順に名前がFire_0 , Fire_1 , Fire_2になっているか確認
良ければエディターのApplyを押して反映させます
SnapCrab_NoName_2016-6-21_10-31-45_No-00.png

Projectにスプライトが表示される
SnapCrab_NoName_2016-6-21_10-32-13_No-00.jpg

ProjectにあるFire_0をHierarchyにドラッグ&ドロップ
名前を Fire にリネームします
Inspectorで SpriteRender > Sorting Layer > Add Sorting Layer を選択
新しくレイヤーを作成して、名前を Fire に
Characterよりも下になるように設置します
SnapCrab_NoName_2016-6-21_10-39-12_No-00.jpg

HierarchyでFireを選択、Sorting Layerを Fire にします
SnapCrab_NoName_2016-6-21_10-39-38_No-00.jpg

HierarchyのFireを選択
メインメニューのWindow > Animation を選択
Animationビューが出るので Create を選択
ファイル名をFallingFireにして、Assets/Asimationsフォルダ内に保存
Sampleの値が 60 になっているか確認
Add Propertyを選択して Sprite Renderer > Sprite を追加
キーをついかして、それぞれスプライトを設定します
0:00 Fire_0
0:05 Fire_1
0:10 Fire_2
0:14 Fire_2
SnapCrab_NoName_2016-6-21_10-54-18_No-00.png

再生して炎が動いてればヨシ
Animatorは特に設定は必要ないので飛ばします
(ステートの並び方とか気になる人はどうぞ)

玉の落下処理
HierarchyのFireを選択
Inspectorで、Transform > Scale X:0.5 Y:0.5 Z:1にします
Rigidbody 2Dを追加
Gravity Scale: 10
Freeze Rotation Zにチェック
SnapCrab_NoName_2016-6-21_11-3-21_No-00.jpg

ヒット処理
続いてCircle Collider 2Dを追加
Radius: 0.32
SnapCrab_NoName_2016-6-21_11-18-0_No-00.jpg

UNIDRA_DATA/Data/Unity2DGame/Scripts/FireController.cs
を、ProjectのAssets/Scriptsにドラッグ&ドロップ
Fireに取り付けます
SnapCrab_NoName_2016-6-21_11-23-32_No-00.jpg

ゲームを実行してみると、地面に当たると消えるようになっています

プレイヤーのダメージ演出
FireのInspectorで、Tag > Add Tag... を選択
新規にタグを作成して、名前をFireに変更
SnapCrab_NoName_2016-6-21_11-27-36_No-00.jpg

HierarchyでFireを選択して、TagをFireに
SnapCrab_NoName_2016-6-21_11-28-10_No-00.jpg

ゲームを実行して、プレイヤーに火の玉を当ててみます
すると、怯んだアニメーションになって、再び走り出します

Fireのプレハブ化
ProjectのAssetsに Prefab フォルダを作成
HierarchyのFireをPrefabフォルダにドラッグ&ドロップ
プレハブ化出来たら、HierarchyのFireは削除
FireプレハブのInspectorでPositionをすべて0にしておきます
SnapCrab_NoName_2016-6-21_11-33-13_No-00.jpg

敵キャラの移動と攻撃
UNIDRA_DATA/Data/Unity2DGame/Scripts/EnemyController.cs
をProjectのAssets/Scriptにドラッグ&ドロップ
HierarchyにあるEnemyに取り付け
SnapCrab_NoName_2016-6-21_11-40-6_No-00.jpg

Hierarchyに空のオブジェクトを作成
名前を EnemyArea_TopLeft にして、Positionを(-3.8, 2.1, 0)にします
同様に空のオブジェクトを作成
名前を EnemyArea_BottomRight にして、Positionを(3.8, 2.1, 0)にします
HierarchyのEnemyを選択、InspectorのEnemyControllerの項目を設定
AreaTopLeft: EnemyArea_TopLeftをドラッグ&ドロップ
AreaBottomRight: EnemyArea_BottomRightをドラッグ&ドロップ
FirePrefab: ProjectにあるFireプレハブ
SnapCrab_NoName_2016-6-21_11-43-28_No-00.jpg

ゲームを動かしてみると、ドラゴンがランダムで移動して、移動先で炎を落としてきます
移動にかける時間はMin Time と Max Time の間でランダムに決めています
素早さやの調整や、スコアの設置などをすればもっとゲームっぽくなるかも
ドラゴン一匹じゃ微妙だったので、3体に増やしてみました



とりあえず、本はここまでなので先に進みます
次回はナビゲーションメッシュなるものを使った練習
複雑な地形で、キャラが目的地まで自動的に移動するための処理?
初めてのことですが、役に立ちそうなので頑張りますよー
関連記事

Leave a Reply


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

Comment

Leave a Reply


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