Szerző Téma: Object ütközések  (Megtekintve 1177 alkalommal)

Object ütközések
« Dátum: 2018. Május 19. - 23:09:51 »
0 Show voters
Hali, egy pakolászós scriptet csináltam aminek egyelőre még nincs lényege viszont olyan kérdés merült fel bennem, hogy hogyan is lehetne ezt megoldani, hogy ne tudjam egymásba pakolni a dolgokat vagy ha érintkezik egy kis rész akkor se tudjam letenni. Várom az ötleteket és előre is köszi szépen.

Object ütközések
« Válasz #1 Dátum: 2018. Május 20. - 01:50:31 »
0 Show voters
Streamer Ben talán vannak hozzá funkciók.
server.redcountystories.org:7777

Object ütközések
« Válasz #2 Dátum: 2018. Május 20. - 13:47:07 »
0 Show voters
Köszi az infót, várom azért még a válaszokat :)

Object ütközések
« Válasz #3 Dátum: 2018. Június 01. - 23:35:27 »
0 Show voters
Elvileg ezzel megtudod nézni... isElementCollidableWith

Nem elérhető Live

  • 507
    • Profil megtekintése
Object ütközések
« Válasz #4 Dátum: 2018. Június 02. - 17:43:22 »
0 Show voters

function canPlaceObject(objectElement)
if isElement(objectElement) then
   local objectX, objectY, objectZ = getElementPosition(objectElement)
   local minX, minY, minZ, maxX, maxY, maxZ = getElementBoundingBox(objectElement)
   local objectMatrix = getElementMatrix(objectElement)
   for i = 0, 1 do
      local z = minZ + maxZ * i
      local offX, offY, offZ = getPositionFromElementOffset(objectMatrix, minX, minY, z)
      if not isLineOfSightClear(objectX, objectY, objectZ, offX, offY, offZ, true, true, false, true, true, false, false, localPlayer) then
         return false
      end
      offX, offY, offZ = getPositionFromElementOffset(objectMatrix, maxX, minY, z)
      if not isLineOfSightClear(objectX, objectY, objectZ, offX, offY, offZ, true, true, false, true, true, false, false, localPlayer) then
         return false
      end
      offX, offY, offZ = getPositionFromElementOffset(objectMatrix, minX, maxY, z)
      if not isLineOfSightClear(objectX, objectY, objectZ, offX, offY, offZ, true, true, false, true, true, false, false, localPlayer) then
         return false
      end
      
      offX, offY, offZ = getPositionFromElementOffset(objectMatrix, maxX, maxY, z)
      if not isLineOfSightClear(objectX, objectY, objectZ, offX, offY, offZ, true, true, false, true, true, false, false, localPlayer) then
         return false
      end
      offX, offY, offZ = getPositionFromElementOffset(objectMatrix, minX, 0, z)
      if not isLineOfSightClear(objectX, objectY, objectZ, offX, offY, offZ, true, true, false, true, true, false, false, localPlayer) then
         return false
      end
      
      offX, offY, offZ = getPositionFromElementOffset(objectMatrix, maxX, 0, z)
      if not isLineOfSightClear(objectX, objectY, objectZ, offX, offY, offZ, true, true, false, true, true, false, false, localPlayer) then
         return false
      end
      offX, offY, offZ = getPositionFromElementOffset(objectMatrix, 0, minY, z)
      if not isLineOfSightClear(objectX, objectY, objectZ, offX, offY, offZ, true, true, false, true, true, false, false, localPlayer) then
         return false
      end
      
      offX, offY, offZ = getPositionFromElementOffset(objectMatrix, 0, maxY, z)
      if not isLineOfSightClear(objectX, objectY, objectZ, offX, offY, offZ, true, true, false, true, true, false, false, localPlayer) then
         return false
      end
      
      offX, offY, offZ = getPositionFromElementOffset(objectMatrix, 0, 0, z)
      if not isLineOfSightClear(objectX, objectY, objectZ, offX, offY, offZ, true, true, false, true, true, false, false, localPlayer) then
         return false
      end
   end
   return true
end
return false
end
function getPositionFromElementOffset(matrix, x, y, z)
return    x * matrix[1][1] + y * matrix[2][1] + z * matrix[3][1] + matrix[4][1],
      x * matrix[1][2] + y * matrix[2][2] + z * matrix[3][2] + matrix[4][2],
      x * matrix[1][3] + y * matrix[2][3] + z * matrix[3][3] + matrix[4][3]
end

 
 
 
Az isLineOfSightClear értékeivel játszhatsz, hogy mivel ütközhet és mivel nem.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal