【初級編】今のclusterでは出来「ない」・難しいモノ(ゲーム機能関係)
written by vins.icon
https://gyazo.com/755e077a3b73e7e32fed0c26be3bd919
「こういうのできるかな?」→「実はできなかった……」ってのを避けるため。
もし「できるよ!」ってのがあればぜひ書き換えたりツッコミ入れたりしてもらえれば。
C#のスクリプトを使う
今のclusterというか、将来に至るまでできないはず。
2020/05/12のハロークラスターにて、今後実装する予定は"しばらくは考えない" という質問への解答がありましたDolphiiiin.icon
特にUnityアセットストアで買ったアセットに注意。
一見するとただの小道具とかパーティクルとか背景に見えてもC#スクリプトが付いているモノがある。
PlayerにHPとかMPとか持たせる
ある意味現在のclusterのLogicで最初に知っておくべき点というか。
正確に言うと、持つことはできるがそれをゲーム内で使うことができない。
このアップデートが入るとかなりゲーム作成が変わる。
データをセーブする
これも現在絶賛製作中のもよう。
Itemの子にItem
武器Itemの子にパーツItemをつけて、何かに当たるとその一部だけ壊れるとか →できない。
あるItemが動き、その子のItemも独自に動くことで複雑な動きにするとか →できない。
厳密に言うと、Unity上ではできるが、ワールドアップロードすると「Itemの子にItemは作れません」と怒られる。
じゃあどうするか。
「子ではないが、動きは別のオブジェクトに従う」というのが可能。
また、単に独自の動きをつけるだけならAnimation Controllerで何とかしてもよい。Unity公式 文字列をいじる
clusterに文字列変数(*)はないので、「私は」「佐藤」「です」をつなげて「私は佐藤です」と表示、みたいなことはできない。
ただし、変数の表示方法は小数点以下いくつまで表示するか、とか「13」を「0013」と表示するとか多少自由が利く。
現在時刻を使って何かする
できない。
ただし前項のSetTextGimmickにSignalを送ると現在時刻が表示されるので時計は作れる。割と見落としやすい。
Playerが何かに押されたり飛ばされたりする:基本
ちょっとクセがある。
まず、RigidBodyのIsKinematicがOFFのモノ(物理に従って動く)がぶつかってくると……
→Playerは全く動かず、ぶつかってきたモノが跳ね飛ばされるもよう。
IsKinematicがON(物理挙動を無視、Animatorとかで動かす)のモノがぶつかってくると……
→Playerが押し出される。
Playerが何かに押されたり飛ばされたりする:実践
下からモノが上がってきた場合、ちょっとガタガタするが普通に押し上げられる。
これを利用してジャンプ台っぽいこともできる。
ただ、ラグいときとかはすり抜けるかもしれないので注意。
RigidbodyのCollision Detectionをいじっても良いかも。
横から押された場合、普通に押される場合と、押されつつ上にどんどんせり上がっていく場合がある。拙作のテスト用ワールド 使うとしても、上下移動だけに活用するのが吉?
(*)「変数」とは
clusterではトリガーやTimerやらから通知されるものを「メッセージ」と説明している。
が、プログラミングで「メッセージ」と言ったときに想像するものと違い、通知後もずっとその値が保存される。
なので「変数」にイメージが近い。
例えば杖ItemにHPが3になった、というメッセージを送るとその後ずっと杖ItemのHPは3である。
なので、杖ItemのHPが3になったというメッセージが来たずっと後でも、Item LogicなどでHP3という数値を使って色々判定できる。
変数ってなんだ、という人はGoogleで検索してみてほしい。
なおSignalだけは保存されない。保存しようがないというのもあるが。