ペニーワイズが読者にオススメするらしいスクリプト記述メモ
この中にはいろいろはいってるよ!
雑すぎて役に立たないよ!
基本的にほとんどの字幕はサイズ70のMS UI Gothicに"縁取りT"をかけたものです。
この中になんと!!!!!ちょっと細工されているのがあるのです!!!!!!!!!!
ではひとつめ、「一緒にスクリプト、やってみないかい?」ですが、このテキストオブジェクト、細工してあります!!!!1!
どんな細工がしてあるかというと・・・
code:lua
<?
local str="一緒にスクリプト、"
if obj.frame>=40 then str=str.."やってみないかい?"end
mes(str)
?>
・・・んーなにこれ?
では、これが何なのかというとテキストオブジェクトのみでスクリプトを実行しています。
"<?"と"?>"はスクリプト制御の始まり、終わりをコントロールしてくれる制御文字です。
なので、 local str ... mes(str) までがスクリプトの記述になります。
では解説してみましょう。
code:lua
local str="一緒にスクリプト、"
ここの部分でローカルの(この解説内ではどうでもいいです)変数strを宣言しています。
変数はざっくり言うといろんなのが入る名前付きの箱みたいなものだと考えてください。
なので、strという箱に"一緒にスクリプト"というstring(文字列、文字が並んでるよ!)を収納します。
では次の・・・
code:lua
if obj.frame>=40 then str=str.."やってみないかい?"end
これはifを扱って特定条件下でその中にある内容を実行してくれます。
この条件は obj.frame >= 40 ・・・obj.frameはそのオブジェクトでの現在のフレーム数、>=は左の値が右の値以上である です。
なので、そのオブジェクトでの現在のフレーム数が40以上であれば中身が実行されます。
そして中身の str=str.."やってみないかい?"ですが、 stringに .. (文字列) を付けるとその文字列が後につけられます!楽しいよ!
最後に、endを宣言してif文が終わります。
最後の・・・
code:lua
obj.mes
これは簡単で、中身の文字列をテキストオブジェクトとして出力するような感じです。
なので、出てくるテキストはstr、つまり文字列となります。
では二つ目、
一分ぐらいの「じゃあプラグインとかスクリプトとか導入しまくるわwwww」が崩れるやつ!!
このスクリプトの内容は・・・
code:lua
local i=obj.index
local fallx,ang=rand(-50,50,i,0),rand(-360,360,i,1)
local falls=rand(100,620,i,0)
obj.ox=(obj.ox+fallx*obj.time/2)
obj.oy=((obj.oy+obj.time)*(falls/100))^2*5
obj.rz=ang*obj.time/5
やっぱなにこれ???
さらに意味不明になってない?
このテキスト、なんと個別オブジェクトになっています!!!!!!!!!
実質TAのようななにか
最初に、iという箱にobj.index・・・なにそれ?
このobj.indexっていうの、なんと!
なんと!!!!個別オブジェクトになっている際の!!!!!!!
そのオブジェクトの番号を渡してくれます!!!!!!!!!11
オブジェクトがいくつもある場合なら0とか2とか返してくれるよ!
・・・よく分からないので飛ばしましょう。
次に・・・fallx,ang = ・・・?
これはつまり二つの箱を作ってそれらに値を入れるのです!!!!
そして・・・rand・・・なにこれ?
これは・・・!!!!乱数をっ・・・作ってくれる画期的な関数(値とか入れるといろいろしてくれる便利なやつだよ!)なのですっっ!!!
ひとつめの値が最小、ふたつめの値が最大、三つ目の値が乱数、四つ目の値がフレーム数だよ!
ひとつめの値が-50、二つ目が50なのでこれらの値からランダムに出されるね!
しかし!これだけだとただ単純に乱数を出すだけでめんどくさい・・・
そこで固定するために、 i(obj.indexとかいう値が入ってるよ!)で乱数を指定します!
そして、四つ目は何も入れないとそのオブジェクトのフレームが入ってるんだけど、これまた単純に乱数を発生させるだけになるよ!
なので、0を入れて固定する!!!!11
もうひとつも同じように最小-360、最大360、オブジェクトの番号、1ふれ・・・?多分最小最大が違うのであんま関係ないよ!
そんな感じに値が入ります!!
三つ目も・・・同じじゃん!
ではこの後の
code:lua
obj.ox=(obj.ox+fallx*obj.time/2)
obj.oy=((obj.oy+obj.time)*(falls/100))^2*5
obj.rz=ang*obj.time/5
こいつらは一体・・・?
こいつらはオブジェクトの情報に直接値を入れてオブジェクトの座標などをいじってるよ!
やばそうに見えるけど全然大丈夫!
obj.oxはそのオブジェクトの相対座標、絶対(x)とはちょっと違うよ!
相対的な座標?絶対?わからない!!!!!(詳しくは調べてね・・・)
これに・・・(obj.ox+fallx*obj.time/2)を代入するよ!わけがわからないね!
これは四則演算の×のやつが*、÷のやつが/になっただけだよ!
基本的にそれらと同じ感じなんだけど・・・
obj.time?なにそれおいしいの?
これにはオブジェクトでの基準の現在の時間が入ってるよ!
なので現在の時間に応じて結果がなんか変わるよ!
では次・・・ここで普通に計算しようとしたら "^" ・・・なにこれ?
ざっくり言うとどこの数学にもあるべき指数だよ!簡単だね!!!
これ以降も普通に四則演算だよ!!
obj.oyはobj.oxのxがyになった・・・じゃあ、次のrzってなんだよ!!!!
これは回転軸のzをコントロールするよ!わけわからないけど3D上でzを操作すると2D上では普通の回転になるよ!!!
obj.timeを前と同じように処理して・・・終了!
じゃあ最後の・・・なにあれ??????
code:lua
obj.oy=((obj.totaltime-obj.time)*2 )^5 *(obj.index%2==1 and 1 or -1)
local t,i=obj.time*2,obj.index*1
obj.ox=obj.ox+math.sin(t+i) *(obj.totaltime-obj.time) *128
obj.oy=obj.oy+math.cos(t+i) *(obj.totaltime-obj.time) *128
そして微妙に汚いな????(コード適当すぎ)
最適化してないじゃん・・・まあそんなことはおいて・・・
obj.totaltimeってなにそれ?obj.timeみたいなのかというと・・・実はこれ、オブジェクトがいる時間なのです!!!
なので、このtotaltimeってやつからtimeとかいうなんかをひくと・・・・あれ~?時間がたつごとに減ってるぞ?
最終的に0になるぞ!!!!
これを二倍にしたら5乗にしてみるとおもしろいことになるよ!なるよ!!!
ここまではわかる・・・おい次のなんなんだよ!!!(obj.index%2==1 and 1 or -1)ってまず式なの?!?!?!?
うん・・・こいつちょっとむずいんだ・・・
これは・・・詳しく説明しづらいけど、%は割った際のあまりだよ!!!
なので、2で割った場合なんと!!!偶数は0なので一致しません!!!なので奇数であればこれがtrueになります!!
いやtrueってなに?ここでは説明しませんけど、これ、二つしかないんですよ・・・
そんなことはさておき、..and 1 or -1ってなに?
これ、条件が達成した際(詳しく言うとtrueであれば)に!!!1になります!!!!それ以外だと0になります!!!!
見ればわかるようにifみたいなやつがここでも使えるよ!!!!!
わかるか!!!!!
さて、そんな感じで箱二つ作っていれてー
math.sin?math.cos???????????????
こいつら・・・何者だっ・・・・???
ざっくり言うと・・・入れた値に対してsinを返す意味不明なやつだよ!!!
こいつ、グラフにすると波っぽくなるよ!!!
そしてxとyにsin、cosを入れると・・・円運動ができるよ!!!円っぽいのができちゃうよ!!!
なので!!!!なんか円をあれこれしたような意味不明な動きができるんだよ!!!!!!11
てんしょnやばい。
そして・・・理解しづらい!!!!
ごめんなさい
・・・
ここまで見たんだね?
ここの文を理解したのなら・・・
お前もLuaの沼に
落ちるんだよ!!!!