2

2D ベクトル用の setMag 関数を持つ p5.js ライブラリを使用して、JavaScript で作成したものを移植しようとしています。

これがそのドキュメントです

ROBLOX/lua で 2D ベクトルの大きさを設定するにはどうすればよいですか?

function particle:update(mouseX,mouseY)
    local t=(Vector2.new(mouseX,mouseY)-(self.pos)).unit.setMag(self.acc)
    self.thrust=t
    self.vel = self.vel + self.thrust
    if self.vel.magnitude>self.maxspeed then
          self.vel.unit.setMag(self.maxspeed)
    end
    self.pos=self.pos+(self.vel)
    self.frame.Position=UDim2.new(0,self.pos.x,0,self.pos.y)
end
4

2 に答える 2

1

roblox でベクトルの大きさを設定する正しい方法は、単純に単位ベクトルを取り、それをベクトルの長さに掛けることです。

function SetMagnitude(vec, mag)
    return vec.unit*mag
end

単位ベクトルは、方向に関しては同一のベクトルですが、大きさが 1 であるため、これが機能します :)

これは基本的に、MBo の回答のメモを単純化したものです。

new_vx = vx * New_Mag / Mag
new_vy = vy * New_Mag / Mag

ベクトルに数値を掛けると、そのすべてのコンポーネントに数値が掛けられるため、次のようになります。

new_v = v * New_Mag / Mag

v.unit の大きさは 1 であるため、次のようになります。

new_v = v.unit * New_Mag / 1

そして、1 で割った数はそれ自体です。

new_v = v.unit * New_Mag

したがって、基本的に、私が「正しい方法」として述べたことは、単なる代替方法ではなく、より効率的でクリーンなソリューションと考えることができます。

于 2016-12-25T19:09:07.043 に答える