我正在开发一款游戏,通过屏幕模拟控制我可以让一个玩家在屏幕上移动
敌人的精灵定期在场景中加入,他们会向玩家移动。通过使用下面的代码,敌人会被添加。
public void addTarget() {
Random rand = new Random();
float x = ( camera.getWidth() + resourcesManager.evilone_region.getWidth());
float minY = resourcesManager.evilone_region.getHeight();
int maxY = (int) (camera.getHeight() - resourcesManager.evilone_region
.getHeight());
int rangeY = (int) (maxY - minY);
float y = rand.nextInt(rangeY) + minY;
target = new AnimatedSprite(x, y, resourcesManager.evilone_region.deepCopy(),vbom){
@Override
protected void preDraw(GLState pGLState, Camera pCamera)
{
super.preDraw(pGLState, pCamera);
pGLState.enableDither();
}
@Override
protected void onManagedUpdate(float pSecondsElapsed)
{
super.onManagedUpdate(pSecondsElapsed);
if(isPlayerMoved){
this.registerEntityModifier(new MoveModifier(2, target.getX(),player.getX(),target.getY(),player.getY()));
}
}
};
attachChild(target);
target.setCullingEnabled(true);
final long[] PLAYER_ANIMATE = new long[] {100, 100, 100};
target.animate(PLAYER_ANIMATE, 0, 2, true);
int minDuration = 2;
int maxDuration = 4;
int rangeDuration = maxDuration - minDuration;
int actualDuration = rand.nextInt(rangeDuration) + minDuration;
mod = new MoveModifier(actualDuration, target.getX(),player.getX(),target.getY(),player.getY());
target.registerEntityModifier(mod.deepCopy());
TargetsToBeAdded.add(target);
}
private void createSpriteSpawnTimeHandler() {
float mEffectSpawnDelay = 1f;
eviloneTimerHandler = new TimerHandler(mEffectSpawnDelay, true,
new ITimerCallback() {
@Override
public void onTimePassed(TimerHandler pTimerHandler) {
if(isPaused){
}else{
//resourcesManager.targetbird.play();
addTarget();
}
}
});
engine.registerUpdateHandler(eviloneTimerHandler);
}
现在问题是当我用模拟控制移动玩家时我想要结果,因为每个敌人都应该改变方向并向玩家移动。但是通过使用这个代码,每个敌人都朝着第一个增加的敌人移动,他们都向着看起来非常奇怪的玩家移动,因为所有敌人都相互坍塌。
请帮忙。
答案 0 :(得分:1)
你没有直接将你的敌人移动到玩家身上。您可以在每次更新时将它们移动5个像素或类似的东西。这是一个示例,但必须改进此代码:
@Override
protected void onManagedUpdate(float pSecondsElapsed)
{
super.onManagedUpdate(pSecondsElapsed);
if( player.getX() > target.getX() )
{
//Move your enemy 5 pixels to right
}
else
//Move your enemy 5 pixels to left
if( player.getY() > target.getY() )
{
//Move your enemy 5 pixels to down
}
else
//Move your enemy 5 pixels to up
}
注意:别忘了检查目标是否达到了玩家。在开始移动目标之前,检查它是否正在移动。您可以使用布尔值来进行chechk。希望它有所帮助。