なんか作り始め
Unityでの1ユニットを1mで
作ることにした。推奨っぽいので
2000mの地面(平面)と
- 途中にコリジョンテストでPlaneの壁をおいて、自機とのコリジョンを狙う
- GameObject>Planeを置き、すでについていたMeshColliderのIsTriggerをONにする
- PlayerにもCapsuleColliderをつける。TriggerONにする
- これだと当たらない
色々した結果。壁をBoxColiderに、PlayerにはRigidBodyをつけたら当たった。
Colider同士だと当たらない?PlaneのMeshColiderでは試してないけど多分当たる。
でもよく考えたら
PlayerにCharacterControllerをつけるとシリンダ形状のアタリもつく。んで壁に当たるとOnTriggerEnter()もちゃんと反応する。
…わからんくなってきた。
CharacterController
PlayerにRigidBodyを直でつける代わりに、CharaControllerをつけてもできた。RigidBodyを内包している様子。
でもこれ人間型のものを想定しているのか、アタリのシリンダーを横向きに(横方向に長く)出来ない。
CharaControllerを動かすには、多分、Move()を読んでやる必要がある。このMoveでTransform.positionも更新してれる。
Rotateはどうなんだろうか?
Fireボタンで
弾を作って飛ばす。Instanciate()を使う。第一引数の生成ターゲットはRigidBodyでインスペクタからセットする感じにした。
最初はInstanciate()したやつをその場でクラスにキャストしてメンバにアクセスしようと思ってやってみたがダメだった。
Instanciate()にはTransformやRigidBodyをターゲットで指定できるが、クラスにはアクセスできんのか?
なんかそうするのは作りとして推奨されてないのかも、Unity的に。
Destroy
Bulletクラス(弾オブジェクトにつけてるスクリプト)のUpdate()で3秒たったら自殺するようにした。
Destroy()の引数はthisじゃない!gameObjectっつーメンバ。
なんていうか
手探りもいいとこで、PrefabとかGameObjectとか分かってるつもりで実は全然て感じ。
Prefabとかにスクリプトを追加するのも大変というか作法的なものがわかんないなー。
まぁそのうちわかるべ。
次
やりたいやつからで
- ゴール壁(端っこまで行ったらスタートに戻る)とか
- 自機移動系(上下左右)(無入力で真ん中に引っ張られる)
- 弾着