mirror of
https://github.com/photonstorm/phaser
synced 2024-11-23 13:13:43 +00:00
Tidying up for 2.4.7.
This commit is contained in:
parent
aad499b025
commit
4d8753e9ce
1 changed files with 6 additions and 66 deletions
|
@ -1124,19 +1124,12 @@ Phaser.Physics.Arcade.prototype = {
|
||||||
this._vel2.x = vxTotal + this._vel1.x;
|
this._vel2.x = vxTotal + this._vel1.x;
|
||||||
}
|
}
|
||||||
|
|
||||||
// var absV = Math.abs(this._vel1.x) + Math.abs(this._vel2.x);
|
|
||||||
// var overlap = (body1.radius + body2.radius) - Math.abs(body1.center.x - body2.center.x);
|
|
||||||
var overlap = (body1.radius + body2.radius) - Phaser.Math.distance(body1.center.x, body1.center.y, body2.center.x, body2.center.y);
|
var overlap = (body1.radius + body2.radius) - Phaser.Math.distance(body1.center.x, body1.center.y, body2.center.x, body2.center.y);
|
||||||
|
|
||||||
// Resets the overlapR to zero if there is no overlap, or to the actual pixel value if there is
|
// Resets the overlapR to zero if there is no overlap, or to the actual pixel value if there is
|
||||||
// body1.overlapR = (this._vel1.x / absV * overlap);
|
|
||||||
// body2.overlapR = (this._vel2.x / absV * overlap);
|
|
||||||
|
|
||||||
body1.overlapR = overlap * 0.5;
|
body1.overlapR = overlap * 0.5;
|
||||||
body2.overlapR = overlap * 0.5;
|
body2.overlapR = overlap * 0.5;
|
||||||
|
|
||||||
// console.log('overlapR', overlap, 'r', body1.overlapR, body2.overlapR);
|
|
||||||
|
|
||||||
// Can't separate two immovable bodies, or a body with its own custom separation logic
|
// Can't separate two immovable bodies, or a body with its own custom separation logic
|
||||||
if (overlapOnly || overlap === 0 || (body1.immovable && body2.immovable) || body1.customSeparateX || body2.customSeparateX)
|
if (overlapOnly || overlap === 0 || (body1.immovable && body2.immovable) || body1.customSeparateX || body2.customSeparateX)
|
||||||
{
|
{
|
||||||
|
@ -1144,29 +1137,8 @@ Phaser.Physics.Arcade.prototype = {
|
||||||
return (overlap !== 0);
|
return (overlap !== 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adjust their positions and velocities accordingly (if there was any overlap)
|
this._pos1.x += (this._vel1.x * this.game.time.physicsElapsed) + overlap;
|
||||||
if (!body1.immovable && !body2.immovable)
|
this._pos2.x += (this._vel2.x * this.game.time.physicsElapsed) + overlap;
|
||||||
{
|
|
||||||
// Equal separation
|
|
||||||
this._pos1.x += (this._vel1.x + body1.overlapR) * this.game.time.physicsElapsed;
|
|
||||||
this._pos2.x += (this._vel2.x + body2.overlapR) * this.game.time.physicsElapsed;
|
|
||||||
|
|
||||||
this._vel1.x = this._velF.x1 * body1.bounce.x;
|
|
||||||
this._vel1.y = this._velF.y1 * body1.bounce.y;
|
|
||||||
|
|
||||||
this._vel2.x = this._velF.x2 * body2.bounce.x;
|
|
||||||
this._vel2.y = this._velF.y2 * body2.bounce.y;
|
|
||||||
}
|
|
||||||
else if (body1.immovable)
|
|
||||||
{
|
|
||||||
this._pos2.x += (this._vel2.x * this.game.time.physicsElapsed) + overlap;
|
|
||||||
this._pos2.y += (this._vel2.y * this.game.time.physicsElapsed) + overlap;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this._pos1.x += (this._vel1.x * this.game.time.physicsElapsed) + overlap;
|
|
||||||
this._pos1.y += (this._vel1.y * this.game.time.physicsElapsed) + overlap;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Rotate positions back again
|
// Rotate positions back again
|
||||||
this.rotate(this._pos1, this._pos1.x, this._pos1.y, sin, cos, false);
|
this.rotate(this._pos1, this._pos1.x, this._pos1.y, sin, cos, false);
|
||||||
|
@ -1178,49 +1150,17 @@ Phaser.Physics.Arcade.prototype = {
|
||||||
|
|
||||||
// Apply to bodies
|
// Apply to bodies
|
||||||
|
|
||||||
// console.log('current pos1', body1.y);
|
|
||||||
// console.log('current pos2', body2.y);
|
|
||||||
|
|
||||||
body2.x = body1.x + this._pos2.x;
|
body2.x = body1.x + this._pos2.x;
|
||||||
body2.y = body1.y + this._pos2.y;
|
body2.y = body1.y + this._pos2.y;
|
||||||
|
|
||||||
body1.x = body1.x + this._pos1.x;
|
body1.x = body1.x + this._pos1.x;
|
||||||
body1.y = body1.y + this._pos1.y;
|
body1.y = body1.y + this._pos1.y;
|
||||||
|
|
||||||
// console.log('after pos1', body1.y);
|
body1.velocity.x = this._vel1.x;
|
||||||
// console.log('after pos2', body2.y);
|
body1.velocity.y = this._vel1.y;
|
||||||
|
|
||||||
if (!body1.immovable && !body2.immovable)
|
body2.velocity.x = this._vel2.x;
|
||||||
{
|
body2.velocity.y = this._vel2.y;
|
||||||
body1.velocity.x = this._vel1.x;
|
|
||||||
body1.velocity.y = this._vel1.y;
|
|
||||||
|
|
||||||
body2.velocity.x = this._vel2.x;
|
|
||||||
body2.velocity.y = this._vel2.y;
|
|
||||||
}
|
|
||||||
else if (body1.immovable)
|
|
||||||
{
|
|
||||||
// Only move body2
|
|
||||||
|
|
||||||
// console.log('current vel1', body1.velocity.y);
|
|
||||||
// console.log('current vel2', body2.velocity.y);
|
|
||||||
|
|
||||||
body2.velocity.x = body1.velocity.x - body2.velocity.x * body2.bounce.x;
|
|
||||||
body2.velocity.y = body1.velocity.y - body2.velocity.y * body2.bounce.y;
|
|
||||||
|
|
||||||
// console.log('new vel1', body1.velocity.y - body2.velocity.y * body2.bounce.y);
|
|
||||||
// console.log('new vel2', body2.velocity.y);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Only move body1
|
|
||||||
|
|
||||||
body1.velocity.x = body2.velocity.x - body1.velocity.x * body1.bounce.x;
|
|
||||||
body1.velocity.y = body2.velocity.y - body1.velocity.y * body1.bounce.y;
|
|
||||||
}
|
|
||||||
|
|
||||||
// console.log('still intersects?', this.intersects(body1, body2));
|
|
||||||
// debugger;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue