Java 类com.badlogic.gdx.ai.steer.behaviors.Pursue 实例源码
项目:gdx-ai
文件:ParallelVsSequenceTest.java
private Predator createPredator (boolean parallel) {
Predator predator = new Predator(parallel ? badlogicTextureRegion : greenFishTextureRegion, this);
predator.setPosition(MathUtils.random(stage.getWidth()), MathUtils.random(stage.getHeight()), Align.center);
predator.setMaxLinearSpeed(100);
predator.setMaxLinearAcceleration(600);
final Pursue<Vector2> pursueSB = new Pursue<Vector2>(predator, null, .5f);
predator.setSteeringBehavior(pursueSB);
testTable.addActor(predator);
BranchTask<Predator> branch = parallel ? new Parallel<Predator>() : new Sequence<Predator>();
branch.addChild(new SelectTargetTask());
branch.addChild(new PursueTask());
predator.btree = new BehaviorTree<Predator>(branch, predator);
return predator;
}
项目:gdx-ai
文件:ParallelVsSequenceTest.java
@Override
public Status execute () {
Predator predator = getObject();
boolean success = false;
if (predator.target != null) {
success = predator.canEatTarget();
if (success)
predator.eatTarget();
else if (!predator.target.eaten) {
((Pursue)predator.getSteeringBehavior()).setEnabled(true);
((Pursue)predator.getSteeringBehavior()).setTarget(predator.target);
return Status.RUNNING;
}
}
((Pursue)predator.getSteeringBehavior()).setEnabled(false);
return success ? Status.SUCCEEDED : Status.FAILED;
}
项目:gdx-ai
文件:ResumeVsJoinTest.java
private Predator createPredator (boolean join) {
Predator predator = new Predator(join ? badlogicTextureRegion : greenFishTextureRegion, this);
predator.setPosition(MathUtils.random(stage.getWidth()), MathUtils.random(stage.getHeight()), Align.center);
predator.setMaxLinearSpeed(100);
predator.setMaxLinearAcceleration(600);
final Pursue<Vector2> pursueSB = new Pursue<Vector2>(predator, null, .5f);
predator.setSteeringBehavior(pursueSB);
testTable.addActor(predator);
BranchTask<Predator> branch = join ? new Parallel<Predator>(Orchestrator.Join) : new Parallel<Predator>(Orchestrator.Resume);
branch.addChild(new SpinAroundTask());
branch.addChild(new SelectTargetTask());
branch.addChild(new PursueTask());
predator.btree = new BehaviorTree<Predator>(branch, predator);
return predator;
}
项目:gdx-ai
文件:ResumeVsJoinTest.java
@Override
public Status execute () {
Predator predator = getObject();
boolean success = false;
if (predator.target != null) {
success = predator.canEatTarget();
if (success)
predator.eatTarget();
else if (!predator.target.eaten) {
((Pursue)predator.getSteeringBehavior()).setEnabled(true);
((Pursue)predator.getSteeringBehavior()).setTarget(predator.target);
return Status.RUNNING;
}
}
((Pursue)predator.getSteeringBehavior()).setEnabled(false);
return success ? Status.SUCCEEDED : Status.FAILED;
}
项目:gdxjam-ugg
文件:EnemyPursueConfig.java
@Override
public void applyConfigs(SteeringBehaviorComponent steeringBC) {
Pursue pursue = (Pursue)steeringBC.behavior;
Steerable steerable = pursue.getOwner();
steerable.setMaxLinearSpeed(MAX_LINEAR_SPEED);
steerable.setMaxLinearAcceleration(MAX_LINEAR_ACCELERATION);
steerable.setMaxAngularSpeed(MAX_ANGULAR_SPEED);
steerable.setMaxAngularAcceleration(MAX_ANGULAR_ACCELERATION);
pursue.setMaxPredictionTime(0.85f);
}
项目:gdxjam-ugg
文件:EnemyFacePursueConfig.java
@Override
public void applyConfigs(SteeringBehaviorComponent steeringBC) {
Pursue pursue = (Pursue)steeringBC.behavior;
Steerable steerable = pursue.getOwner();
steerable.setMaxLinearSpeed(MAX_LINEAR_SPEED);
steerable.setMaxLinearAcceleration(MAX_LINEAR_ACCELERATION);
steerable.setMaxAngularSpeed(MAX_ANGULAR_SPEED);
steerable.setMaxAngularAcceleration(MAX_ANGULAR_ACCELERATION);
}
项目:JACWfA
文件:scPursue.java
@Override
public void init(RunConfig config) throws InvalidTestFormatException {
super.init(config);
Ann = new Agent(new Vector2(0, 0), 0);
Bob = new Agent(new Vector2(10000, 0), 0);
Bob.linearVelocity = new Vector2(50, -50);
Pursue<Vector2> sb = new Pursue<Vector2>(Ann, Bob);
Ann.setSteeringBehavior(sb);
}
项目:gdx-ai
文件:ParallelVsSequenceTest.java
public void selectTarget () {
target = null;
((Pursue)getSteeringBehavior()).setTarget(null);
Vector2 pos = getPosition();
float minDist = Float.POSITIVE_INFINITY;
for (Sheep sheep : testScreen.sheeps) {
float dist = sheep.getPosition().dst2(pos);
if (dist < minDist) {
minDist = dist;
target = sheep;
}
}
}
项目:gdx-ai
文件:ResumeVsJoinTest.java
public void selectTarget () {
target = null;
((Pursue)getSteeringBehavior()).setTarget(null);
Vector2 pos = getPosition();
float minDist = Float.POSITIVE_INFINITY;
for (Sheep sheep : testScreen.sheeps) {
float dist = sheep.getPosition().dst2(pos);
if (dist < minDist) {
minDist = dist;
target = sheep;
}
}
}
项目:gdx-ai
文件:Scene2dPursueTest.java
@Override
public void create () {
super.create();
character = new SteeringActor(container.badlogicSmall, false);
character.setPosition(MathUtils.random(container.stageWidth), MathUtils.random(container.stageHeight), Align.center);
character.setMaxLinearSpeed(100);
character.setMaxLinearAcceleration(600);
prey = new SteeringActor(container.target, false);
prey.setPosition(MathUtils.random(container.stageWidth), MathUtils.random(container.stageHeight), Align.center);
prey.setMaxLinearSpeed(100);
prey.setMaxLinearAcceleration(250);
prey.setMaxAngularAcceleration(0); // used by Wander; set to 0 because independent facing is disabled
prey.setMaxAngularSpeed(5);
final Pursue<Vector2> pursueSB = new Pursue<Vector2>(character, prey, 0.3f);
character.setSteeringBehavior(pursueSB);
Wander<Vector2> wanderSB = new Wander<Vector2>(prey) //
// Don't use Face internally because independent facing is off
.setFaceEnabled(false) //
// No need to call setAlignTolerance, setDecelerationRadius and setTimeToTarget for the same reason
.setWanderOffset(110) //
.setWanderOrientation(10) //
.setWanderRadius(64) //
.setWanderRate(MathUtils.PI2 * 3.5f);
prey.setSteeringBehavior(wanderSB);
testTable.addActor(character);
testTable.addActor(prey);
Table detailTable = new Table(container.skin);
detailTable.row();
addMaxLinearAccelerationController(detailTable, character, 0, 2000, 20);
detailTable.row();
final Label labelMaxPredictionTime = new Label("Max.Prediction Time[" + pursueSB.getMaxPredictionTime() + "] sec.",
container.skin);
detailTable.add(labelMaxPredictionTime);
detailTable.row();
Slider maxPredictionTime = new Slider(0, 5, .1f, false, container.skin);
maxPredictionTime.setValue(pursueSB.getMaxPredictionTime());
maxPredictionTime.addListener(new ChangeListener() {
@Override
public void changed (ChangeEvent event, Actor actor) {
Slider slider = (Slider)actor;
pursueSB.setMaxPredictionTime(slider.getValue());
labelMaxPredictionTime.setText("Max.Prediction Time [" + slider.getValue() + "] sec.");
}
});
detailTable.add(maxPredictionTime);
detailTable.row();
addSeparator(detailTable);
detailTable.row();
addMaxLinearSpeedController(detailTable, character, 0, 300, 10);
detailWindow = createDetailWindow(detailTable);
}