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

Object ütközések
« Dátum: 2018. Május 19. - 23:09:51 »
0
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
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
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
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

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