2013/10/12(土) [n年前の日記]
#1 [unity] 作ってみたサンプルをアップロード
とりあえず、CharacterController を使ったサンプルはこんな感じに。
_CharacterControllerを使ってみるテスト (Unity Web Player要) (2016/09/04, 2017/03/19 置き場所変更)
手前の地形は blender で作成したモデルを表示して、奥の地形は UnityのTerrain を使って作った地形を表示。
ポリゴンのカクカクぶりが、PS1ゲームのそれっぽいなと…。地形モデルの上手な作り方を勉強しないといかん気が。とりあえず、木を並べるとそれっぽくなるというか、何か色々と誤魔化せるような気がしてきたり。
_CharacterControllerを使ってみるテスト (Unity Web Player要) (2016/09/04, 2017/03/19 置き場所変更)
手前の地形は blender で作成したモデルを表示して、奥の地形は UnityのTerrain を使って作った地形を表示。
ポリゴンのカクカクぶりが、PS1ゲームのそれっぽいなと…。地形モデルの上手な作り方を勉強しないといかん気が。とりあえず、木を並べるとそれっぽくなるというか、何か色々と誤魔化せるような気がしてきたり。
◎ 2017/03/19追記。 :
Dropboxのpublicフォルダが死んだのでファイルの置き場所を変更。
[ ツッコむ ]
#2 [unity] CharacterControllerについて勉強中
Unity の CharacterController を使ってオブジェクトを動かすあたりを勉強中。
プレイヤーキャラと敵キャラに CharacterController を使ってみたのだけど、アタリ判定ができなくて悩んだり。ググってみたところ、CharacterController を割り当てた場合は、そのオブジェクトが動いてる時しか衝突判定をしないのだそうで。困った。敵キャラがぶつかったらプレイヤーがダメージを受ける、といった当たり前の処理すら実現できず。
結局、プレイヤーキャラの子オブジェクトとして、Box Collider を持たせて、その Box Collider と敵キャラでアタリを取るような感じに。
アタリ判定らしいことがができたところまでは良かったけれど。ダメージを受けてからしばらくの間は、プレイヤーキャラと敵キャラのアタリ判定を取りたくないわけで。しかし、プレイヤーキャラと敵キャラがめり込まない・重ならないような処理がされてしまって、それを無効化する方法が分からず。
結局、プレイヤーキャラがダメージを受けてる最中は、別のレイヤーを設定して、そのレイヤーと敵キャラが居るレイヤーは衝突判定をしない設定にしてどうにかそれっぽくなったけど。力技というか無理矢理というか…。方法として合ってるかどうか…。他にいい方法ないのかな…。ちなみに、どのレイヤーとどのレイヤーで衝突判定をするかしないかは、Edit → Project Settings → Physics で設定できる。
_Unity - Unity Manual - レイヤーベースの衝突検出 / Layer-Based Collision Detection.
一応それらしくなったかなと思ったけれど、これでは満足のいく仕様が実現できないなと。その手のアクションゲームは、プレイヤーキャラの頭上にある足場にジャンプで飛び乗ることができたり、足場に乗った状態で下キー+ジャンプボタンを押すとそこから真下に降りたりできるわけで。しかし CharacterController を使うと、ジャンプしても頭上の足場にめり込まないように補正がかかってしまうし、そこから真下に降りるように動かしてみても、やはりめり込まないように補正がかかって降りられない。挙動・動きとしては正しいのだけど…。
自前で動かさないとダメかなという気分になってきた。RayCast を使って逐一チェックして独自に補正しないといかんのだろうな…。
プレイヤーキャラと敵キャラに CharacterController を使ってみたのだけど、アタリ判定ができなくて悩んだり。ググってみたところ、CharacterController を割り当てた場合は、そのオブジェクトが動いてる時しか衝突判定をしないのだそうで。困った。敵キャラがぶつかったらプレイヤーがダメージを受ける、といった当たり前の処理すら実現できず。
結局、プレイヤーキャラの子オブジェクトとして、Box Collider を持たせて、その Box Collider と敵キャラでアタリを取るような感じに。
アタリ判定らしいことがができたところまでは良かったけれど。ダメージを受けてからしばらくの間は、プレイヤーキャラと敵キャラのアタリ判定を取りたくないわけで。しかし、プレイヤーキャラと敵キャラがめり込まない・重ならないような処理がされてしまって、それを無効化する方法が分からず。
結局、プレイヤーキャラがダメージを受けてる最中は、別のレイヤーを設定して、そのレイヤーと敵キャラが居るレイヤーは衝突判定をしない設定にしてどうにかそれっぽくなったけど。力技というか無理矢理というか…。方法として合ってるかどうか…。他にいい方法ないのかな…。ちなみに、どのレイヤーとどのレイヤーで衝突判定をするかしないかは、Edit → Project Settings → Physics で設定できる。
_Unity - Unity Manual - レイヤーベースの衝突検出 / Layer-Based Collision Detection.
一応それらしくなったかなと思ったけれど、これでは満足のいく仕様が実現できないなと。その手のアクションゲームは、プレイヤーキャラの頭上にある足場にジャンプで飛び乗ることができたり、足場に乗った状態で下キー+ジャンプボタンを押すとそこから真下に降りたりできるわけで。しかし CharacterController を使うと、ジャンプしても頭上の足場にめり込まないように補正がかかってしまうし、そこから真下に降りるように動かしてみても、やはりめり込まないように補正がかかって降りられない。挙動・動きとしては正しいのだけど…。
自前で動かさないとダメかなという気分になってきた。RayCast を使って逐一チェックして独自に補正しないといかんのだろうな…。
[ ツッコむ ]
以上、1 日分です。