一言シリーズ~2点間の距離の求め方~
三平方の定理を使う。Luaだと、math.sqrtを使う。
function test()
local ax = 0
local ay = 0
local bx = 10
local by = 10
local xLength = (bx-ax)
local yLength = (by-ay)
local abLength = math.sqrt( (xLength*xLength) + (yLength*yLength) )
end
イメージしづらい場合は、bxを0にして、原点からyに10伸びてる線を考えるといい。
当然、長さは10だが、計算結果も10になるはず。
記事の紹介~Luaを開発に使っている事例~
知人が教えてくれた、チュートリアルの実装にLuaを用いているというお話が記載されている記事。
ロジックまで完全にLua側では実装していなくて、少し使ってる程度だから、パフォーマンスの検証などは恐らくやってない、との事だったけど、商用アプリでLuaも選択肢の一つとして使われている事例があるという事は、情報が出ていないだけで、やはり使われているアプリも出ているんだろうなと思った。
※追記
ちなみに、Unityとは言っていないので、Cocosの可能性もあり。
ただ、スマフォ開発でLua使ってるよという事例は、これとブレフロくらいしか知らなかったので、希少な例であることには変わらないと思う。
Cocosで行けるなら、Unityでもいけるはず。
Unityの話~描画順番の話~
https://twitter.com/eral_r_l/status/495866386581712897?lang=ja
上記のツイートの転載というかまとめ。
[1]Unityの描画順について解説を6回に分けて呟きます。Unityに於けるモデルの描画順はカメラのDepth値とRenderQueueと呼ばれる値とカメラからの距離に依って決まります。
[2]まず第1にカメラのDepth値が小さい順に映るモデルが描画されます。映るモデルとはカメラのCullingMaskとモデルのLayerに依って決まります。カメラ内に映るモデルが複数有る場合、RenderQueueと呼ばれる値に依り描画順が決まります。
[3]RenderQueueの確認はInspecoterをDebugモードにしてMaterialにフォーカスさせるとCustom Render Queueとして確認出来ます。この値が小さい順に描画されます。但しマイナス値の場合はShader組み込みの値が使われます。
[4]Shader組み込みのRenderQueueの確認はInspecoterをNormalモードにしてShaderにフォーカスさせるとRender queueとして確認出来ます。多くの場合RenderQueueは遮蔽モデルなら2000、透過モデルなら3000と為ります。
[5]RenderQueueが同じ場合、カメラからの距離に依り描画順が決定します。RenderQueueが3000未満のモデルの場合カメラから近い順に描画され、3000以上なら遠い順に描画されます。
[6]なお唯一RenderQueueに影響されない描画物が1つ有り、それがカメラのClearFlagsに依る描画です。この描画はカメラの一番最初に行われ、それ以降に映るモデルが描画される事に為ります。
Unityの話~Animator関連で初めてみたワーニング~
【実行時に出たワーニング】
Internal: JobTempAlloc has allocations that are more than 4 frames old - this is not allowed and likely a leak
【状況】
・A,B,Cのオブジェクトそれぞれに、同じAnimatorを付けている
・Animationの終わりに、イベントトリガーを付けている
・イベントトリガーの中身は、A,B,C全てのオブジェクトを非表示にするようにしている
・Aだけで検知すればいいので、B,Cに関してはイベントトリガー関数先で何もしていない
・この状況で、B,CのオブジェクトをSetActive(false);を呼びと、発生
・外部からの圧力(まったく関係ないタイミング)で、全て強制的にSetActiveを呼ぶと、出ない
【原因】
不明
【対処法】
それぞれのオブジェクトのイベントで、自分自身のアクティブをオフるようにした
一言シリーズ~角度がわかっている場合の、原点0,0からのx,y座標の求め方~
原点0,0から角度Nにある座標の数値は
(cosN, sinN)
https://helpx.adobe.com/jp/flash/kb/228615.html
(これのページは、cosとsinが逆になってしまっている)
function test()
posx = math.cos(radianValue)
posy = math.sin(radianValue)
end
主に、シューティングの弾で向いている角度に向かって飛ばす移動量のベース値などに使う。
Unityの話~Lua形式のファイルをアセットバンドル化しようとして、速攻躓いた件~
Unrecognized assets cannot be included in AssetBundles: "Assets/StreamingAssets/EnemyManager.lua".
このように出て、アセットバンドルに入れられない。.lua拡張子は対応していないようだ。
〇StreamingAssets内に入っていると、拡張子がtxtでもダメ
〇Resources以下にtxt形式にすればOK
〇Resources以下でも、拡張子がluaだとNG
〇ただ、マニフェストファイルを見ると、含まれているような挙動をみせる
〇ロードしようとすると、やっぱり読めない
〇Unity上では、lua形式のファイルはDefaultAssetとして認識されているようだ
〇CSVはテキストアセット扱いのようである
最初からtxt拡張子にしてもいいのだが、そうするとVIM上でシンタックスが効かなくなるので、作業ディレクトリでは拡張子luaで作業し、アセットバンドルフォルダにコピーして拡張子をtxtに変えるbatファイルを作って対処。
del "..\Resources\ForAssetbundle\*.txt"
copy "*.lua" "..\Resources\ForAssetbundle"
rename "..\Resources\ForAssetbundle\*.lua" "*.txt"
pause