Code: Select all
for i, v in ipairs(listOfBullets) do v:update(dt) end
Code: Select all
for i, v in ipairs(listOfBullets) do v:update(dt) end
Code: Select all
for i, v in ipairs(listOfBullets) do
v:update(dt)
for ii, vv in ipairs(listOfBullets) do
if vv ~= v and checkCollison(v,vv) then
resolveCollision(v,vv)
end
end
end
Code: Select all
for i, v in ipairs(projectiles) do
v.x = v.x + v.speed * dt
for ii = 1, 2 do
if CheckCollision(v.x, v.y, v.w, v.h, p[ii].x, p[ii].y, p[ii].w, p[ii].h) then
if ii == v.id then
else
table.remove(projectiles, i)
end
end
end
for ii, vv in ipairs(projectiles) do
if vv ~= v and CheckCollision(v.x, v.y, v.w, v.h, vv.x, vv.y, vv.w,vv.h) then
table.remove(projectiles, i)
table.remove(projectiles, ii)
end
end
end
Code: Select all
-- Update all projectiles at once
for i = 1, #projectiles do
local v = projectiles[i]
v.x = v.x + v.speed * dt
end
local deleted = {}
local player_collision = false
-- Check collisions
for i = 1, #projectiles do
local v = projectiles[i]
local other_player_id = 3 - v.id
if CheckCollision(v, p[other_player_id]) then
deleted[i] = true
-- insert here the action to inflict damage to the player
end
for j = i + 1, #projectiles do
local vv = projectiles[j]
if CheckCollision(v, vv) then
deleted[i] = true
deleted[j] = true
end
end
end
-- Remove obsolete bullets
for i = #projectiles, 1, -1 do
if deleted[i] then
table.remove(projectiles, i)
end
end
Code: Select all
for i = #list, 1, -1 do
for j = i - 1, 1, -1 do
if checkCollisions(list[i], list[j]) then
table.remove(list, i)
table.remove(list, j)
break
end
end
end
Code: Select all
+--------+
| 3 |
| |
+---+---+ +-+-----+
| | | | | |
| +---+--+-+ |
| 1 | | 2 |
| | | |
+-------+ +-------+
Users browsing this forum: Bing [Bot] and 213 guests