MovingObstacles now slowed down when player in stasis + are moving to the zero position when player hits the trigger
This commit is contained in:
@ -976,8 +976,8 @@
|
|||||||
<obstacleData floating="true" moving="false" deadly="false" leftEdge="18.443184" rightEdge="20.150185" height="0.5" y="0.2733334">
|
<obstacleData floating="true" moving="false" deadly="false" leftEdge="18.443184" rightEdge="20.150185" height="0.5" y="0.2733334">
|
||||||
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="0.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
|
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="0.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
|
||||||
</obstacleData>
|
</obstacleData>
|
||||||
<obstacleData floating="true" moving="true" deadly="true" leftEdge="24.014523" rightEdge="24.345524" height="0.331" y="-0.3799998">
|
<obstacleData floating="true" moving="true" deadly="true" leftEdge="22.634523" rightEdge="22.965525" height="0.331" y="-0.37333316">
|
||||||
<moveComponent length="2.74" rotation="90.0" startOffset="1.0" direction="1.0" speed="0.609" hasPlayerXSpeed="false" triggerDistance="0.0"/>
|
<moveComponent length="2.74" rotation="90.0" startOffset="0.5" direction="1.0" speed="0.609" hasPlayerXSpeed="false" triggerDistance="0.0"/>
|
||||||
</obstacleData>
|
</obstacleData>
|
||||||
<obstacleData floating="true" moving="false" deadly="false" leftEdge="20.568808" rightEdge="22.097807" height="0.166" y="-4.656613E-9">
|
<obstacleData floating="true" moving="false" deadly="false" leftEdge="20.568808" rightEdge="22.097807" height="0.166" y="-4.656613E-9">
|
||||||
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="0.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
|
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="0.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
|
||||||
|
@ -976,8 +976,8 @@
|
|||||||
<obstacleData floating="true" moving="false" deadly="false" leftEdge="18.443184" rightEdge="20.150185" height="0.5" y="0.2733334">
|
<obstacleData floating="true" moving="false" deadly="false" leftEdge="18.443184" rightEdge="20.150185" height="0.5" y="0.2733334">
|
||||||
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="0.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
|
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="0.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
|
||||||
</obstacleData>
|
</obstacleData>
|
||||||
<obstacleData floating="true" moving="true" deadly="true" leftEdge="24.014523" rightEdge="24.345524" height="0.331" y="-0.3799998">
|
<obstacleData floating="true" moving="true" deadly="true" leftEdge="22.634523" rightEdge="22.965525" height="0.331" y="-0.37333316">
|
||||||
<moveComponent length="2.74" rotation="90.0" startOffset="1.0" direction="1.0" speed="0.609" hasPlayerXSpeed="false" triggerDistance="0.0"/>
|
<moveComponent length="2.74" rotation="90.0" startOffset="0.5" direction="1.0" speed="0.609" hasPlayerXSpeed="false" triggerDistance="0.0"/>
|
||||||
</obstacleData>
|
</obstacleData>
|
||||||
<obstacleData floating="true" moving="false" deadly="false" leftEdge="20.568808" rightEdge="22.097807" height="0.166" y="-4.656613E-9">
|
<obstacleData floating="true" moving="false" deadly="false" leftEdge="20.568808" rightEdge="22.097807" height="0.166" y="-4.656613E-9">
|
||||||
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="0.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
|
<moveComponent length="0.0" rotation="0.0" startOffset="0.0" direction="0.0" speed="0.0" hasPlayerXSpeed="false" triggerDistance="0.0"/>
|
||||||
|
@ -99,7 +99,7 @@
|
|||||||
</ceilingTiles>
|
</ceilingTiles>
|
||||||
<obstacles class="java.util.ArrayList">
|
<obstacles class="java.util.ArrayList">
|
||||||
<obstacleData floating="true" moving="true" deadly="false" leftEdge="-1.1566665" rightEdge="-0.6566666" height="0.5" y="-0.99333346">
|
<obstacleData floating="true" moving="true" deadly="false" leftEdge="-1.1566665" rightEdge="-0.6566666" height="0.5" y="-0.99333346">
|
||||||
<moveComponent length="3.687" rotation="55.602" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="true" triggerDistance="0.0"/>
|
<moveComponent length="3.687" rotation="55.602" startOffset="0.0" direction="1.0" speed="0.0" hasPlayerXSpeed="true" triggerDistance="-0.204"/>
|
||||||
</obstacleData>
|
</obstacleData>
|
||||||
</obstacles>
|
</obstacles>
|
||||||
<stars class="java.util.ArrayList"/>
|
<stars class="java.util.ArrayList"/>
|
||||||
|
@ -4,8 +4,6 @@ import de.frajul.endlessroll.data.Vector;
|
|||||||
import de.frajul.endlessroll.levels.MoveComponent;
|
import de.frajul.endlessroll.levels.MoveComponent;
|
||||||
import de.frajul.endlessroll.levels.ObstacleData;
|
import de.frajul.endlessroll.levels.ObstacleData;
|
||||||
import de.frajul.endlessroll.levels.worlds.World;
|
import de.frajul.endlessroll.levels.worlds.World;
|
||||||
import de.frajul.endlessroll.main.GameLog;
|
|
||||||
import de.frajul.endlessroll.main.game.Camera;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Julian on 20.11.2015.
|
* Created by Julian on 20.11.2015.
|
||||||
@ -18,11 +16,12 @@ public class Obstacle extends Entity {
|
|||||||
private final float GRID_SQUARE_SIZE = 0.1f;
|
private final float GRID_SQUARE_SIZE = 0.1f;
|
||||||
private Vector gridSize;
|
private Vector gridSize;
|
||||||
private MoveComponent moveComponent;
|
private MoveComponent moveComponent;
|
||||||
|
private float movementMultiplier = 1.0f;
|
||||||
|
|
||||||
private float moveProgress;
|
private float moveProgress;
|
||||||
private float moveDirection;
|
private float moveDirection;
|
||||||
|
|
||||||
public Obstacle(World world, ObstacleData data, float terrainEdge) {
|
public Obstacle(World world, ObstacleData data, float terrainEdge, Player player) {
|
||||||
super(world.getObstacleTexture(), new Vector(data.getX(), data.getY()), data.getWidth(),
|
super(world.getObstacleTexture(), new Vector(data.getX(), data.getY()), data.getWidth(),
|
||||||
data.getHeight());
|
data.getHeight());
|
||||||
this.deadly = data.isDeadly();
|
this.deadly = data.isDeadly();
|
||||||
@ -35,16 +34,17 @@ public class Obstacle extends Entity {
|
|||||||
moveComponent.init(super.getPosition());
|
moveComponent.init(super.getPosition());
|
||||||
moveProgress = moveComponent.getStartOffset();
|
moveProgress = moveComponent.getStartOffset();
|
||||||
moveDirection = moveComponent.getDirection();
|
moveDirection = moveComponent.getDirection();
|
||||||
|
//Constant player speed assumed
|
||||||
|
float timeTillPlayerReachesTrigger = player.getSpeed() * ((moveComponent
|
||||||
|
.getLeftmostPosition() - super.getWidth() / 2 - moveComponent
|
||||||
|
.getTriggerDistance()) - player.getRightEdge());
|
||||||
|
moveDirection *= -1;
|
||||||
|
moveWithMoveComponent(timeTillPlayerReachesTrigger * 1000 * 1000, player.getSpeed());
|
||||||
|
moveDirection *= -1;
|
||||||
}
|
}
|
||||||
gridSize = calcGridSize();
|
gridSize = calcGridSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isPlayerOverTrigger(Player player) {
|
|
||||||
if (moveComponent == null)
|
|
||||||
return false;
|
|
||||||
return moveComponent.getLeftmostPosition() - super.getWidth() / 2 - moveComponent.getTriggerDistance() <= player.getRightEdge();
|
|
||||||
}
|
|
||||||
|
|
||||||
private Vector calcGridSize() {
|
private Vector calcGridSize() {
|
||||||
int gridWidth = (int) (width / GRID_SQUARE_SIZE);
|
int gridWidth = (int) (width / GRID_SQUARE_SIZE);
|
||||||
int gridHeight = (int) (height / GRID_SQUARE_SIZE);
|
int gridHeight = (int) (height / GRID_SQUARE_SIZE);
|
||||||
@ -53,24 +53,33 @@ public class Obstacle extends Entity {
|
|||||||
return new Vector(gridWidth, gridHeight);
|
return new Vector(gridWidth, gridHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void moveWithMoveComponent(float frameTime, Player player) {
|
public void slowMovementForOneFrame(float value) {
|
||||||
|
movementMultiplier *= value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void moveWithMoveComponent(float frameTime, float playerSpeed) {
|
||||||
if (moveComponent.isHasPlayerXSpeed()) {
|
if (moveComponent.isHasPlayerXSpeed()) {
|
||||||
moveComponent.calcSpeedForPlayerSpeed(player);
|
moveComponent.calcSpeedForPlayerSpeed(playerSpeed);
|
||||||
}
|
}
|
||||||
float distance = frameTime * moveComponent.getSpeed() * moveComponent.TRANSITION_VALUE;
|
float distance = frameTime * moveComponent
|
||||||
moveProgress += moveDirection * distance / moveComponent.getLength();
|
.getSpeed() * moveComponent.TRANSITION_VALUE * movementMultiplier;
|
||||||
|
float newProgress = moveDirection * distance / moveComponent.getLength();
|
||||||
|
moveProgress += newProgress;
|
||||||
if (moveProgress < 0) {
|
if (moveProgress < 0) {
|
||||||
moveProgress *= -1;
|
moveProgress *= -1;
|
||||||
moveDirection *= -1;
|
moveDirection *= -1;
|
||||||
}
|
}
|
||||||
if (moveProgress > 1) {
|
while (moveProgress > 1) {
|
||||||
moveProgress = 2 - moveProgress;
|
moveProgress -= 2;
|
||||||
moveDirection *= -1;
|
if (moveProgress < 0) {
|
||||||
|
moveProgress *= -1;
|
||||||
|
moveDirection *= -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
super.setPosition(moveComponent.getPositionForProgress(moveProgress));
|
super.setPosition(moveComponent.getPositionForProgress(moveProgress));
|
||||||
super.setMovement(moveComponent.getMovementVector(moveDirection));
|
super.setMovement(moveComponent.getMovementVector(moveDirection));
|
||||||
GameLog.i(super.getMovement().getX() + "; " + player.getMovement().getX());
|
movementMultiplier = 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isMoving() {
|
public boolean isMoving() {
|
||||||
|
@ -7,7 +7,7 @@ import de.frajul.endlessroll.data.Vector;
|
|||||||
import de.frajul.endlessroll.entities.particles.ParticleSource;
|
import de.frajul.endlessroll.entities.particles.ParticleSource;
|
||||||
import de.frajul.endlessroll.entities.particles.ParticleSystem;
|
import de.frajul.endlessroll.entities.particles.ParticleSystem;
|
||||||
import de.frajul.endlessroll.entities.shapes.PlayerShape;
|
import de.frajul.endlessroll.entities.shapes.PlayerShape;
|
||||||
import de.frajul.endlessroll.entities.tools.PlayerInfluenceTool;
|
import de.frajul.endlessroll.entities.tools.Stasis;
|
||||||
import de.frajul.endlessroll.main.game.Timer;
|
import de.frajul.endlessroll.main.game.Timer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -29,7 +29,7 @@ public class Player extends Entity {
|
|||||||
private ParticleSource superPowerParticles;
|
private ParticleSource superPowerParticles;
|
||||||
|
|
||||||
private ParticleSystem particleSystem;
|
private ParticleSystem particleSystem;
|
||||||
private List<PlayerInfluenceTool> influenceTools = new ArrayList<>();
|
private List<Stasis> stases = new ArrayList<>();
|
||||||
private List<Float> forces = new ArrayList<>();
|
private List<Float> forces = new ArrayList<>();
|
||||||
private float gravityForce;
|
private float gravityForce;
|
||||||
|
|
||||||
@ -80,8 +80,8 @@ public class Player extends Entity {
|
|||||||
if (!hasSuperPower && superPowerParticles != null)
|
if (!hasSuperPower && superPowerParticles != null)
|
||||||
superPowerParticles.kill();
|
superPowerParticles.kill();
|
||||||
|
|
||||||
for (PlayerInfluenceTool tool : influenceTools)
|
for (Stasis stasis : stases)
|
||||||
tool.influencePlayerValues(this);
|
stasis.influencePlayerMovementValues(this);
|
||||||
|
|
||||||
for (float force : forces)
|
for (float force : forces)
|
||||||
super.getMovement().y += force;
|
super.getMovement().y += force;
|
||||||
@ -100,7 +100,7 @@ public class Player extends Entity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void postMoveUpdate() {
|
public void postMoveUpdate() {
|
||||||
influenceTools.clear();
|
stases.clear();
|
||||||
forces.clear();
|
forces.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,8 +116,12 @@ public class Player extends Entity {
|
|||||||
return hasSuperPower;
|
return hasSuperPower;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addInfluenceTool(PlayerInfluenceTool tool) {
|
public void addStasis(Stasis stasis) {
|
||||||
influenceTools.add(tool);
|
stases.add(stasis);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Stasis> getStases() {
|
||||||
|
return stases;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addForce(float force) {
|
public void addForce(float force) {
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
package de.frajul.endlessroll.entities.tools;
|
|
||||||
|
|
||||||
import de.frajul.endlessroll.data.Vector;
|
|
||||||
import de.frajul.endlessroll.entities.Player;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by Julian on 03.11.2017.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public abstract class PlayerInfluenceTool extends Tool {
|
|
||||||
|
|
||||||
public PlayerInfluenceTool(ToolType type, Vector position, float width, float height, boolean updateBounds, boolean placedByRightEdge) {
|
|
||||||
super(type, position, width, height, updateBounds, placedByRightEdge);
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract void influencePlayerValues(Player player);
|
|
||||||
|
|
||||||
}
|
|
@ -6,17 +6,19 @@ import de.frajul.endlessroll.entities.Player;
|
|||||||
import de.frajul.endlessroll.entities.collision.geometry.Geometry;
|
import de.frajul.endlessroll.entities.collision.geometry.Geometry;
|
||||||
import de.frajul.endlessroll.entities.particles.ParticleSource;
|
import de.frajul.endlessroll.entities.particles.ParticleSource;
|
||||||
import de.frajul.endlessroll.entities.particles.ParticleSystem;
|
import de.frajul.endlessroll.entities.particles.ParticleSystem;
|
||||||
|
import de.frajul.endlessroll.main.game.GameScene;
|
||||||
import de.frajul.endlessroll.main.game.Timer;
|
import de.frajul.endlessroll.main.game.Timer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Julian on 11.02.2016.
|
* Created by Julian on 11.02.2016.
|
||||||
*/
|
*/
|
||||||
public class Stasis extends PlayerInfluenceTool {
|
public class Stasis extends Tool {
|
||||||
|
|
||||||
private ParticleSource particleSource;
|
private ParticleSource particleSource;
|
||||||
private boolean firstCollision = true;
|
private boolean firstCollision = true;
|
||||||
private final static float Y_SLOW_FACTOR = .4f; //Final .2f
|
private final static float Y_SLOW_FACTOR = .4f; //Final .2f
|
||||||
private final static float X_SLOW_FACTOR = .9f; //Final .8f
|
private final static float X_SLOW_FACTOR = .9f; //Final .8f
|
||||||
|
private float forceValue;
|
||||||
|
|
||||||
public Stasis(Vector position, ParticleSystem particleSystem) {
|
public Stasis(Vector position, ParticleSystem particleSystem) {
|
||||||
super(ToolType.STASIS, position,
|
super(ToolType.STASIS, position,
|
||||||
@ -30,6 +32,7 @@ public class Stasis extends PlayerInfluenceTool {
|
|||||||
particleSource = new ParticleSource(new Vector(position), particleSystem.stasis);
|
particleSource = new ParticleSource(new Vector(position), particleSystem.stasis);
|
||||||
particleSource.setSpawnSize(new Vector(super.width, super.height));
|
particleSource.setSpawnSize(new Vector(super.width, super.height));
|
||||||
particleSource.start();
|
particleSource.start();
|
||||||
|
forceValue = ToolType.STASIS.getCurrentUpgradeValue(ToolUpgradeType.FORCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -40,7 +43,7 @@ public class Stasis extends PlayerInfluenceTool {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlayerCollision(Player player, Timer timer) {
|
public void onPlayerCollision(Player player, Timer timer) {
|
||||||
player.addInfluenceTool(this);
|
player.addStasis(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -53,16 +56,17 @@ public class Stasis extends PlayerInfluenceTool {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void influencePlayerMovementValues(Player player) {
|
||||||
public void influencePlayerValues(Player player) {
|
float finalXSlow = getCurrentXSlowFactor();
|
||||||
float forceValue = ToolType.STASIS.getCurrentUpgradeValue(ToolUpgradeType.FORCE);
|
|
||||||
float finalXSlow = X_SLOW_FACTOR - forceValue / 20f;
|
|
||||||
player.manipulateAllForces(Y_SLOW_FACTOR / forceValue);
|
player.manipulateAllForces(Y_SLOW_FACTOR / forceValue);
|
||||||
player.getMovement().setX(player.getMovement().getX() * finalXSlow);
|
player.getMovement().setX(player.getMovement().getX() * finalXSlow);
|
||||||
if (firstCollision) {
|
if (firstCollision) {
|
||||||
player.getMovement().y *= Y_SLOW_FACTOR / forceValue;
|
player.getMovement().y *= Y_SLOW_FACTOR / forceValue;
|
||||||
firstCollision = false;
|
firstCollision = false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getCurrentXSlowFactor() {
|
||||||
|
return X_SLOW_FACTOR - forceValue / 20f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@ package de.frajul.endlessroll.levels;
|
|||||||
import org.simpleframework.xml.Attribute;
|
import org.simpleframework.xml.Attribute;
|
||||||
|
|
||||||
import de.frajul.endlessroll.data.Vector;
|
import de.frajul.endlessroll.data.Vector;
|
||||||
import de.frajul.endlessroll.entities.Player;
|
|
||||||
|
|
||||||
public class MoveComponent {
|
public class MoveComponent {
|
||||||
|
|
||||||
@ -69,8 +68,8 @@ public class MoveComponent {
|
|||||||
return triggerDistance;
|
return triggerDistance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void calcSpeedForPlayerSpeed(Player player) {
|
public void calcSpeedForPlayerSpeed(float playerSpeed) {
|
||||||
float xSpeed = player.getSpeed();
|
float xSpeed = playerSpeed;
|
||||||
speed = xSpeed / new Vector(triangleWidth, triangleHeight).normalize().getX();
|
speed = xSpeed / new Vector(triangleWidth, triangleHeight).normalize().getX();
|
||||||
speed /= TRANSITION_VALUE;
|
speed /= TRANSITION_VALUE;
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ import de.frajul.endlessroll.entities.particles.ParticleSystem;
|
|||||||
import de.frajul.endlessroll.entities.shapes.PlayerShape;
|
import de.frajul.endlessroll.entities.shapes.PlayerShape;
|
||||||
import de.frajul.endlessroll.entities.textures.TexturePack;
|
import de.frajul.endlessroll.entities.textures.TexturePack;
|
||||||
import de.frajul.endlessroll.entities.tools.Bomb;
|
import de.frajul.endlessroll.entities.tools.Bomb;
|
||||||
|
import de.frajul.endlessroll.entities.tools.Stasis;
|
||||||
import de.frajul.endlessroll.entities.tools.Tool;
|
import de.frajul.endlessroll.entities.tools.Tool;
|
||||||
import de.frajul.endlessroll.entities.tools.ToolType;
|
import de.frajul.endlessroll.entities.tools.ToolType;
|
||||||
import de.frajul.endlessroll.levels.Level;
|
import de.frajul.endlessroll.levels.Level;
|
||||||
@ -43,7 +44,8 @@ public class GameScene extends Scene {
|
|||||||
terrain.loadData(world, level.getTerrainEdge(), level.getTerrainTiles());
|
terrain.loadData(world, level.getTerrainEdge(), level.getTerrainTiles());
|
||||||
ceiling.loadData(world, level.getCeilingEdge(), level.getCeilingTiles());
|
ceiling.loadData(world, level.getCeilingEdge(), level.getCeilingTiles());
|
||||||
uncategorizedEntities.add(goal);
|
uncategorizedEntities.add(goal);
|
||||||
player.init(playerPlayerShape, terrain.getEdge(), level.getStartSpeed(), level.getEndSpeed(), particleSystem);
|
player.init(playerPlayerShape, terrain.getEdge(), level.getStartSpeed(),
|
||||||
|
level.getEndSpeed(), particleSystem);
|
||||||
uncategorizedEntities.add(player);
|
uncategorizedEntities.add(player);
|
||||||
collectables.init(level, textures);
|
collectables.init(level, textures);
|
||||||
for (ObstacleData data : level.getObstacles())
|
for (ObstacleData data : level.getObstacles())
|
||||||
@ -63,7 +65,7 @@ public class GameScene extends Scene {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addObstacle(ObstacleData data) {
|
public void addObstacle(ObstacleData data) {
|
||||||
Obstacle obstacle = new Obstacle(currentWorld, data, terrain.getEdge());
|
Obstacle obstacle = new Obstacle(currentWorld, data, terrain.getEdge(), player);
|
||||||
obstacles.add(obstacle);
|
obstacles.add(obstacle);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,6 +83,19 @@ public class GameScene extends Scene {
|
|||||||
|
|
||||||
public void update(Timer timer) {
|
public void update(Timer timer) {
|
||||||
player.setSpeedByProgress(player.getProgress() / goalX);
|
player.setSpeedByProgress(player.getProgress() / goalX);
|
||||||
|
|
||||||
|
if (!player.getStases().isEmpty()) {
|
||||||
|
synchronized (obstacles) {
|
||||||
|
for (Stasis stasis : player.getStases()) {
|
||||||
|
for (Obstacle obstacle : obstacles) {
|
||||||
|
if (obstacle.isMoving()) {
|
||||||
|
obstacle.slowMovementForOneFrame(stasis.getCurrentXSlowFactor());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
player.preMoveUpdate(timer);
|
player.preMoveUpdate(timer);
|
||||||
|
|
||||||
if (player.hasSuperPower() && player.getBottomEdge() < terrain.getEdge()) {
|
if (player.hasSuperPower() && player.getBottomEdge() < terrain.getEdge()) {
|
||||||
|
@ -91,8 +91,9 @@ public abstract class Scene {
|
|||||||
Entity entity = iterator.next();
|
Entity entity = iterator.next();
|
||||||
if (entity instanceof Obstacle) {
|
if (entity instanceof Obstacle) {
|
||||||
Obstacle obstacle = (Obstacle) entity;
|
Obstacle obstacle = (Obstacle) entity;
|
||||||
if (obstacle.isMoving() && obstacle.isPlayerOverTrigger(player))
|
if (obstacle.isMoving())
|
||||||
obstacle.moveWithMoveComponent(timer.getFrameTimeSeconds(), player);
|
obstacle.moveWithMoveComponent(timer.getFrameTimeSeconds(),
|
||||||
|
player.getSpeed());
|
||||||
}
|
}
|
||||||
boolean remove = updateEntity(entity, timer);
|
boolean remove = updateEntity(entity, timer);
|
||||||
if (remove)
|
if (remove)
|
||||||
|
Reference in New Issue
Block a user