improvement: put automove in physic mixin
This commit is contained in:
parent
95ea526b53
commit
0421bd4954
3 changed files with 19 additions and 31 deletions
|
@ -57,21 +57,10 @@ end
|
||||||
-- PHYSICS FUNCTIONS
|
-- PHYSICS FUNCTIONS
|
||||||
-- Handle movement and collisions.
|
-- Handle movement and collisions.
|
||||||
|
|
||||||
function Actor2D:autoMove(dt)
|
function Actor2D:moveToFuturePosition(dt)
|
||||||
self:updateHitboxes()
|
|
||||||
self.onGround = false
|
|
||||||
self:applyGravity(dt)
|
|
||||||
|
|
||||||
local dx, dy = self:getFuturePosition(dt)
|
local dx, dy = self:getFuturePosition(dt)
|
||||||
local newx, newy, cols, colNumber = self:move(dx, dy)
|
local _, _, cols, colNumber = self:move(dx, dy)
|
||||||
|
return cols, colNumber
|
||||||
-- apply after the movement the friction, until the player stop
|
|
||||||
-- note: the friction is applied according to the delta time,
|
|
||||||
-- thus the friction should be how much speed is substracted in 1 second
|
|
||||||
|
|
||||||
self:solveAllCollisions(cols)
|
|
||||||
|
|
||||||
self:applyFriction(dt)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function Actor2D:changeSpeedToCollisionNormal(normal)
|
function Actor2D:changeSpeedToCollisionNormal(normal)
|
||||||
|
|
|
@ -67,21 +67,10 @@ end
|
||||||
-- PHYSICS FUNCTIONS
|
-- PHYSICS FUNCTIONS
|
||||||
-- Handle movement and collisions.
|
-- Handle movement and collisions.
|
||||||
|
|
||||||
function Actor3D:autoMove(dt)
|
function Actor3D:moveToFuturePosition(dt)
|
||||||
self:updateHitboxes()
|
|
||||||
self.onGround = false
|
|
||||||
self:applyGravity(dt)
|
|
||||||
|
|
||||||
local dx, dy, dz = self:getFuturePosition(dt)
|
local dx, dy, dz = self:getFuturePosition(dt)
|
||||||
local newx, newy, newz, cols, colNumber = self:move(dx, dy, dz)
|
local _, _, _, cols, colNumber = self:move(dx, dy, dz)
|
||||||
|
return cols, colNumber
|
||||||
-- apply after the movement the friction, until the player stop
|
|
||||||
-- note: the friction is applied according to the delta time,
|
|
||||||
-- thus the friction should be how much speed is substracted in 1 second
|
|
||||||
|
|
||||||
self:solveAllCollisions(cols)
|
|
||||||
|
|
||||||
self:applyFriction(dt)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function Actor3D:changeSpeedToCollisionNormal(normal)
|
function Actor3D:changeSpeedToCollisionNormal(normal)
|
||||||
|
|
|
@ -127,9 +127,19 @@ function PhysicalActor:checkGround()
|
||||||
end
|
end
|
||||||
|
|
||||||
function PhysicalActor:autoMove(dt)
|
function PhysicalActor:autoMove(dt)
|
||||||
-- The base actor don't have coordinate
|
self:updateHitboxes()
|
||||||
-- so the autoMove is only usefull to its
|
self.onGround = false
|
||||||
-- 2D and 3D childrens
|
self:applyGravity(dt)
|
||||||
|
|
||||||
|
local cols, colNumber = self:moveToFuturePosition(dt)
|
||||||
|
|
||||||
|
-- apply after the movement the friction, until the player stop
|
||||||
|
-- note: the friction is applied according to the delta time,
|
||||||
|
-- thus the friction should be how much speed is substracted in 1 second
|
||||||
|
|
||||||
|
self:solveAllCollisions(cols)
|
||||||
|
|
||||||
|
self:applyFriction(dt)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- HITBOX FUNCTIONS
|
-- HITBOX FUNCTIONS
|
||||||
|
|
Loading…
Reference in a new issue