FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

de_cpl_millの回転看板の作り方

今回は久しぶりにMAP製作について書きませう

と言うわけで、de_cpl_millのAサイトだっけ?あの猫の絵がある回転式の看板

mill自体がvmexでデコンパイルできなかったので、頑張ってそれっぽいやつを作ってみました。


まずどんなもんかっていう画像でも
$あくでぃすぶろぐぅ-sumple

一応10秒ごとに変わります。

詳しい仕組みを説明。


例えばこの4枚のテクスチャを使って看板を作るとします。
$あくでぃすぶろぐぅ


んで、だいたい150×150ぐらいのサイズでブラシ化し、sift+AでFace edit sheatを開きFitを押してぴったりサイズにした後、10個に分割します。
$あくでぃすぶろぐぅ

注意点は一個のブラシの奥行きと高さを同じにすること。横から見た時に正方形になるように。


そして、下の画像のように各パーツを十字に切り裂く。めんどくさいけど、グループ化をうまいこと使えば数分の作業。できたら①みたいになるので、②&③を目指して、表の看板にする面以外のパーツを削除。
$あくでぃすぶろぐぅ


あとは下画像のようにそれぞれを間違えないようにはめ込んでいきましょう。はめ込む順番で看板完成後の順番が変わるのでそこらへんはうまくやってください。
ポイントとしては上から順番にがめこんでいくと間違えがないです。
$あくでぃすぶろぐぅ


全部根気強く組みたてるとこんな感じ
$あくでぃすぶろぐぅ


そして各パーツの端っこにfunc_rotatingを一個作ってください。Nameはわかりやすいように「jiku1」にしときましょう。
ブラシを作ってctrl+Tで作れます。
$あくでぃすぶろぐぅ

ここでの注意点は、さっき組み立てたパーツとfunc_rotatingの中心点を同じにすること。
func_rotating自体を回転させ、それにパーツをくっつけて一緒に回転させるので、ここでズレてしまうと回転した際にズレてしまいます。


func_rotatingの設定はとくにイジってないですが、flagsはNo Solidにチェックを入れ、Y Axisにチェック。他はチェック無しです。

Y AxisとX Axisが結構複雑なので、ここはいろいろ試行錯誤して見ると以外な発見がありますよ。


んでこれまた根気がいりますが、パーツを4つずつ選び一気にエンティティー化します。
selection toolでctrlを押しながら順番にクリックで複数個選べます。
んで選んだ状態でctrl+Tでエンティティー化。
$あくでぃすぶろぐぅ

名前は何でもいいですが、結構エンティティー増えるのでわかりやすいように番号をふりましょう。
ホントはfunc_brushにしたかったんですが、func_brushだと回転させると消えてしまうという意味不明なことになったので、あれこれ試行錯誤した末func_buttonに落ち着きました。

func_button以外でもできるやつはあると思いますが、もしこのままfunc_buttonで作る人はflagsで「Use Activates」のチェックを外してください。せっかくなのでDon't moveにチェックいれたほうがいいかも。

先ほども言いましたが、func_rotatingを軸にして回転させるので、parentsの所にそのfunc_buttonが該当するfunc_rotatingの名前をいれてください。



いよいよ完成が見えてきました。
func_rotatingとfunc_buttonをそれぞれ10個ずつ作って、ちゃんとparents指定もしてあげたら、いよいよ大詰めです。


ひとつlogic_timerを設置します。entity toolから作れます。


logic_timer設定↓※いじるとこだけ抜粋
Name = timer(お好きにどうぞ)
Use Random Time = Yes
Minimum ~ = 10
Maximum ~ = 10

このMinimum~とMaximum~は10秒ごとにタイマー(発動)ということです。
なのでお好きな時間を指定してください。
もしも
Minimum ~ = 5
Maximum ~ = 10
とすると、5~10秒の間のランダムな時間で発動されます。

んでlogic_timerのOutputの設定を説明。
回転のスタートとストップの2回をそれぞれのfunc_rotatingに出力するので、今回の場合はOutputが20個になります。

まずスタートから
My Output Name = On Timer
Target Entity Name = jiku1(func_rotatingの名前)
Via this input = Start
After a delay ~ = 0.00

続いてストップ
My Output Name = On Timer
Target Entity Name = jiku1(func_rotatingの名前)
Via this input = Stop
After a delay ~ = 0.89

これをfunc_rotatingすべてに出力です。結構めんどいっす。


んで注意点なんですけど、この設定はまだ未完成です。
というのも、今回の仕掛けとして、スタートさせて90度ぐらい回転した時にストップの命令を出しています。

あくまでも90度ぐらいなので、厳密にはちょっとズレます。だから回転を重ねるごとにズレが大きくなるわけです。

今回はfunc_rotatingの速度が100の場合0.89秒でストップ命令を出すのが一番ズレが少なかったという、ひとつの例だと思ってください。


んで作っててわかったのが、今回のような速度100指定して0.89秒ストップはtick100用だと思っててください。

tick33とかだとめちゃくちゃズレます。


だからたぶんde_cpl_millはtickがまだ低い時代に作られたマップなので、その時のtickに合わせてあるがゆえ、tick100時代の今だとズレが半端ないことになってるんだと思います。


すっごく長くなりましたが今回はこんなとこで!

こんな長いの最後まで読んだ人いるか知らないけど、一応サンプルのvmfとbspを配布します。


DOWNLOAD

では!

コメント

非公開コメント
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。