gpt4 book ai didi

android - 需要有关 AndEngine 中 Sprite Movements 的帮助

转载 作者:行者123 更新时间:2023-11-30 02:50:14 24 4
gpt4 key购买 nike


我正在开发一款游戏,其中我有一个玩家通过使用屏幕模拟控制在屏幕上移动。
敌人 Sprite 会定期添加到场景中,并且它们会向玩家移动。通过使用下面的代码,敌人会被添加。

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);
}


现在的问题是,当我用模拟控制移动玩家时,我想要结果,因为每个敌人都应该改变方向并向玩家移动。但是通过使用这个代码,每个敌人都朝着第一个添加的敌人移动,他们都朝着玩家移动,这看起来很奇怪,因为他们都倒在了对方身上。
请帮忙。

最佳答案

您不必直接将敌人移动到玩家身边。您可以在每次更新或类似的情况下将它们移动 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
}

注意:不要忘记检查目标是否到达玩家。在开始移动目标之前,请检查它当前是否正在移动。您可以使用 bool 值来检查它。希望对您有所帮助。

关于android - 需要有关 AndEngine 中 Sprite Movements 的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24326166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com