2015年4月29日水曜日

Unityでゲームつくり9

棒人間4

画面をクリックして
Fキーで玉を打つ
Cでしゃがみ
矢印キーで操作
スペースでジャンプ
uまたは左controlで上段攻撃
nまたは左Altではらい攻撃
HPが0になると倒れて操作不能になるが特にゲームオーバーなどの画面遷移はない
敵を倒しても特にゲームクリアーなどの表示はない

覚書:
・倒された時に
gameobject.SetActive(false)をして
あらかじめつくっておいたragdollを
Instantiateした
ragdollの作り方は大体人型のキャラを配置し
メニューのGameObject->3DObject->Ragdoll
を選択して各ボーンをドラッグアンドドロップ
それをいったんPrefabにして
シーンからは削除
スクリプト側からはpublic変数にして
インスペクターにPrefabをドラッグアンドドロップ

人気ブログランキングへ
にほんブログ村 デザインブログランキング

Unityでゲームつくり8

棒人間3

画面をクリックして
Fキーで玉を打つ
Cでしゃがみ
矢印キーで操作
スペースでジャンプ
左controlで上段攻撃
左Altではらい攻撃
まだゲームではなく単に動かすだけ

覚書:
・avatar maskを使うために追加したレイヤーについては
anim.SetLayerWeight(1,1f);
のようにウェイトを設定する必要がある


人気ブログランキングへ
にほんブログ村 デザインブログランキング

2015年4月28日火曜日

Unityでゲームつくり8

棒人間2

画面をクリックして
Fキーで玉を打つ
Cでしゃがみ
矢印キーで操作
スペースでジャンプ
左controlでパンチ
左Altでキック
ゲームではなく単に動かすだけ

覚書:
・二段飛びできてしまっている
理由は多分キックできるように足にコライダーを追加してあるから
その接地判定用のrayがそのコライダーにヒットして空中でも接地していると
勘違いしてるのか
足から接地判定用のrayを出すべきだったか
・リジッドボディでも単なる球なら1000個でも問題なく動いた



人気ブログランキングへ
にほんブログ村 デザインブログランキング

2015年4月27日月曜日

Unityでゲームつくり7

棒人間1

画面をクリックして矢印キーで操作
スペースでジャンプ
左controlでパンチ
左Altでキック
ゲームではなく単に動かすだけ

覚書:
・MacBookProだとキャラクター40体くらいで動きがガタついてきた
どこがボトルネックかは今後試していく
スクリプト部分かメッシュかコライダーか
(追記:
シェーダーを変えても大して変わらず
スクリプトとリジッドボディを削除すればコライダーがあっても
(一体あたり4個のボックスコライダーと2つのスフェアコライダーと1つのカプセルコライダーを持っている)1000体でも動いた
スクリプトを削除してもリジッドボディがあると100体くらいでガタついた
おそらくリジッドボディの処理が一番重い
がスクリプトがある場合もない時と比べて2倍くらい重くなってる
思ったより影響が大きい
どのスクリプトのどの部分の影響かは今後調べる
(追記:
70体くらいでOnTriggerStayを削除すればガタつかない
OnTriggerStayをオーバーライドすると中身がなくても
ガタつきに影響があった
OnTriggerStay内でプレイヤーの位置判定に用いたRaycast
の処理は大して影響がないっぽい

)

人気ブログランキングへ
にほんブログ村 デザインブログランキング

Unityでゲームつくり6

人型のキャラクターを動かす3

6個の宝石を集めてから
円筒に到達するとクリアー
邪魔する骸骨は視界に入ると回転して追いかけて攻撃してくる

覚書:
・チュートリアルにあるようにコライダーの大きさをアニメーションのカーブに合わせて
変化させるよりも単にボックスコライダーコンポーネントをもったキューブを
背骨や骨盤といったいくつかの主要なボーンの子にして
メッシュレンダラーを削除して不可視にしたほうが簡単だし現実に近い動作をする

人気ブログランキングへ
にほんブログ村 デザインブログランキング

2015年4月26日日曜日

Unityでゲームつくり5


人型のキャラクターを動かす2

矢印キーで前進、後退、左右へ旋回
スペースでジャンプ
controlでパンチ

ゲームではなくただ動かすだけ

覚書:
・人型のキャラクターなら
ボーンの数が違っても
(足の関節が3つでも)
アニメーションを使いまわせる
・fbxでアニメーションを書き出す際は
モデルの初期位置を座標原点にしておかないとColliderの位置設定がしにくくなる
・移動アニメーションクリップをブレンドする場合は参考サイトの3:10あたりの方法で
animator controllerのblend treeで
2DFreeFormCartesianを選択し順番は好きなように好きなだけアニメーションクリップを追加し最後にCompute PositionsのSpeed and angular speed
を選択すると自動的に大体適切な遷移をするようになるので
最後parametersの座標系に表示されたアニメーションクリップの位置を
アニメーションを再生しながら調整する

参考サイト:
http://unity3d.com/learn/tutorials/projects/stealth/enemy-animator-controller

人気ブログランキングへ
にほんブログ村 デザインブログランキング

Unityでゲームつくり4

人型のキャラクターを動かす


矢印キーで操作
スペースでジャンプ
controlでパンチ

ゲームではなくただ動かすだけ


覚書:
・RigidBodyとColliderとスクリプトで動かした
CharacterControllerは使わず
・人型のキャラクターのアニメーションは流用できる
(3dsmaxのbipedで確認
Blenderは未確認

インポートした後にhumanoid
に設定
人型キャラにボーンを追加したモデルにもアニメーションを使えるが
追加したボーンについては動かない
モデルのスキンについては人型キャラクターのルートのボーンを追加してはいけない
(これはUnityに限らず当たり前だったか
ルートのボーンはPlevisの位置と一見近いが激しい動作をするとかなりずれる)

・AnimatorのApply Root motion
をチェックするとインポートしたアニメーションの動きがそのままキャラクターに適用される
つまりfbxなどのアニメーションを作る際にキャラクターが前進するようにすると
キャラクターのアニメーションを再生しただけで前進する
回転させれば回転する
(アニメーションで回転させる場合はRigidBodyのConstraintsでFreezeRotationをチェックしないと動かした時にこける)
スクリプトでtransformの位置を直接操作する必要はなく
スクリプト側からはAnimatorControllerの変数を制御するだけで良い

・AvatarMask作成して
AnimatorController
でレイヤー追加してAvatarMask設定すると
設定した部分のみを動かせる
これは例えば走りながら上半身を追加で動かしたりしたい時
そのまま上半身を動かしたアニメーションをブレンドしてしまうと
下半身の走りとブレンドされてしまうがAvatarMaskを使えば防げる

・AnimatorControllerでトランジションのパラメータを設定する際に
HasExitTimeのチェックオフにしておかないと条件を満たしてもすぐには遷移しない

・Colliderコンポーネントをもつオブジェクトを
アニメーションのあるキャラクターのボーンの子にすれば
そのオブジェクトの動きや衝突もアニメーションにともなって適切に行われる
(今回はキューブを右手の子にしてメッシュレンダラーを削除して不可視にして
あるのでパンチ動作でリジッドボディを叩いて動かせる)

参考サイト:
https://www.youtube.com/watch?v=Xx21y9eJq1U


人気ブログランキングへ
にほんブログ村 デザインブログランキング