0

http://docs.unity3d.com/ScriptReference/Physics.SphereCast.html 基本的にはレイキャスティングだと思いますが、ほぼすべての方向です。

このインスタンスの光線は次のように作成されます。

Ray.new(Vector3.new(x,y,z)  -- origin
Vector3.new(x,y,z))         -- direction

明確化: roblox で 360 度回転し続けるディスコ ボールを作成しています。ボールが約 1 度回転するたびに、ほぼすべての方向に光線が放射されます。これらの光線は、FindPartOnRay(ray) を使用して接触点の位置を記録します。そこから、FindPartOnRay(ray) から取得した位置にライトを配置しています。

4

2 に答える 2

0

私はおそらくこれに沿って何かを実装し始めるでしょう:

function spherecast(radius, centre, objects)
   local hits = {}

   for i, obj in pairs(objects) do
      local d = radius + obj.size
      local dx = obj.x - centre.x
      local dy = obj.y - centre.y
      local dz = obj.z - centre.z
      local sqrdist = dx * dx + dy * dy + dz * dz
      if sqrdist <= d * d then
         table.insert(hits, obj)
      end
   end
   return hits
end

衝突に関する詳細情報が必要になることは承知していますが、最初のラウンドとして、これは非常に高速です。obj.sizeは最大寸法(幅、高さ、奥行き)です。

于 2014-11-06T04:53:34.120 に答える