概要
短い式で 2Dベクトル(Vec2)を1つ作るノードです。現在は別の Expression
ノードや list_map / list_filter の vec 入力へ渡し、ベクトル計算を
再利用する用途が中心です。
使い方のポイント
- 動く座標の定番:
vec2(sin(time*pi*2), cos(time*pi*2))で円運動、vec2(time * 32, 0)で横スクロール。結果は別の Expression ノードのvec入力へ渡し、x(vec)/y(vec)で各成分を取り出せる - ドット絵ではオフセットを整数化しておくとぶれない:
vec2(floor(x), floor(y)) - 2つの数値からただ Vec2 を組むだけでも使える(数値→Vec2 の変換点)
関連ノード
expression_float/expression_bool—vec入力で結果を再利用list_map/list_filter— リスト式のvec入力で結果を再利用time_source— 時間の供給(式内timeでも可)
まず大事なこと
- ここで使う
x,y,vec,flagは、変数パネルで作る変数とは別物です - これは Expression ノード自身の入力ピン名 です
x,y,vec_x,vec_y,flagは Inspector から直接入力もできます- 変数パネルの変数を使いたい時は、
Variable Refなどで取り出して各入力ピンへつなぎます - 入力ピンに値がつながっている時は、入力ピンの値が Inspector の値より優先されます
- 未接続の入力は次の値として扱われます
x,y=0vec=[vec_x, vec_y]flag=false
使えるもの
- 変数:
x,y,vec,vx,vy,flag,time,frame,total_frames - 演算:
+ - * / %,== != < <= > >=,&& || ! - 関数:
min,max,clamp,abs,floor,ceil,round,sign,sin,cos,tan,sqrt,pow,lerp,vec2,x,y,length,if
よく使う式
vec2(x, y)vec2(x + 1, y - 1)vec + vec2(2, 0)if(flag, vec2(1, 0), vec2(0, 1))
具体例
例1: 座標をそのまま Vec2 化
xを1yを2expression = vec2(x, y)
value = [1, 2]
例2: 少しずらす
xを1yを2expression = vec2(x + 1, y + 2)
value = [2, 4]
どういう時に使うか
- Expression / List の式をまたいでベクトル計算を再利用したい時
- 2成分をまとめたまま計算し、後段の式で
x(vec)/y(vec)に分けたい時
注意
- 最終的に Vec2 へ変換できる式にしてください
- 迷ったら
vec2(...)を明示的に書くのが安全です - 現在の主要な Transform / Path ノードには Vec2 を直接受ける入力がありません。 必要な場合は成分を別々の数値として渡してください。
&&/||とifは短絡評価します。clampの逆順境界は入れ替え、sign(0) = 0、%は非負のユークリッド剰余です。0除算・0による剰余・ 負数のsqrtはエラーになります。- 式を入力中は、途中の不完全な文字列でもその場で評価されるので、一時的にエラー表示が出ることがあります