Java 类com.badlogic.gdx.ai.steer.behaviors.Arrive 实例源码
项目:JACWfA
文件:scBlended.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);
Arrive<Vector2> aSB = new Arrive<Vector2>(Ann, Bob);
LookWhereYouAreGoing<Vector2> lwyagSB = new LookWhereYouAreGoing<Vector2>(
Ann);
BlendedSteering<Vector2> sb = new BlendedSteering<Vector2>(Ann)
.setLimiter(NullLimiter.NEUTRAL_LIMITER).add(aSB, 1f)
.add(lwyagSB, 1f);
Ann.setSteeringBehavior(sb);
}
项目:Pacman_libGdx
文件:GhostAI.java
public void setBehavior(int behavior) {
switch (behavior) {
case ARRIVE_BEHAVIOR:
if (arriveBehavior == null) {
if (GameManager.instance.playerLocation != null) {
arriveBehavior = new Arrive<>(this, GameManager.instance.playerLocation)
.setEnabled(true)
.setTimeToTarget(0.1f)
.setArrivalTolerance(0.5f);
steeringBehavior = arriveBehavior;
}
} else {
steeringBehavior = arriveBehavior;
}
break;
case WANDER_BEHAVIOR:
steeringBehavior = wanderBehavior;
default:
break;
}
}
项目:gdxjam-ugg
文件:EnemyArrivePursueConfig.java
@Override
public void applyConfigs(SteeringBehaviorComponent steeringBC) {
Arrive arrive = (Arrive)steeringBC.behavior;
Steerable steerable = arrive.getOwner();
steerable.setMaxLinearSpeed(MAX_LINEAR_SPEED);
steerable.setMaxLinearAcceleration(MAX_LINEAR_ACCELERATION);
steerable.setMaxAngularSpeed(MAX_ANGULAR_SPEED);
steerable.setMaxAngularAcceleration(MAX_ANGULAR_ACCELERATION);
arrive.setArrivalTolerance(0.1f);
arrive.setDecelerationRadius(0.1f);
arrive.setTimeToTarget(0.05f);
}
项目:gdxjam-ugg
文件:EnemyArriveConfig.java
@Override
public void applyConfigs(SteeringBehaviorComponent steeringBC) {
Arrive arrive = (Arrive)steeringBC.behavior;
Steerable steerable = arrive.getOwner();
steerable.setMaxLinearSpeed(MAX_LINEAR_SPEED);
steerable.setMaxLinearAcceleration(MAX_LINEAR_ACCELERATION);
steerable.setMaxAngularSpeed(MAX_ANGULAR_SPEED);
steerable.setMaxAngularAcceleration(MAX_ANGULAR_ACCELERATION);
arrive.setArrivalTolerance(0.5f);
arrive.setDecelerationRadius(10f);
arrive.setTimeToTarget(0.005f);
}
项目:gdxjam-ugg
文件:BehaviorUtils.java
public static SteerLocation getTarget(SteeringBehavior behavior){
SteerLocation targetL = null;
if(behavior instanceof Face) targetL = (SteerLocation)((Face) behavior).getTarget();
else if(behavior instanceof Arrive) targetL = (SteerLocation)((Arrive) behavior).getTarget();
else if(behavior instanceof Seek) targetL = (SteerLocation)((Seek) behavior).getTarget();
return targetL;
}
项目:gdxjam-ugg
文件:BehaviorUtils.java
public static Arrive createArrive(float x, float y, Steerable steerable){
SteerLocation loc = new SteerLocation();
loc.getPosition().set(x, y);
Arrive arrive = new Arrive(steerable, loc);
arrive.setTarget(loc);
arrive.setOwner(steerable);
return arrive;
}
项目:JACWfA
文件:scArrive.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);
Arrive<Vector2> sb = new Arrive<Vector2>(Ann, Bob);
Ann.setSteeringBehavior(sb);
}
项目:GDXJam
文件:EntityFactory.java
public static Entity createSquad (Vector2 position, Faction faction) {
Entity entity = builder.createEntity(EntityCategory.SQUAD, position).physicsBody(BodyType.DynamicBody).circleSensor(30.0f)
.faction(faction).target().filter(EntityCategory.SQUAD, 0, EntityCategory.SQUAD | EntityCategory.RESOURCE)
.steeringBehavior().stateMachine().getWithoutAdding();
SteerableComponent steerable = engine.createComponent(SteerableComponent.class).init(
Components.PHYSICS.get(entity).getBody(), 30.0f);
SquadComponent squadComp = engine.createComponent(SquadComponent.class).init(steerable);
squadComp.targetLocation.getPosition().set(position);
entity.add(squadComp);
// A good rule of thumb is to make the maximum speed of the formation
// around
// half that of the members. We also give the anchor point far less
// acceleration.
steerable.setMaxLinearSpeed(SteerableComponent.MAX_LINEAR_SPEED / 2);
steerable.setMaxLinearAcceleration(SteerableComponent.MAX_LINEAR_ACCELERATION / 10);
Arrive<Vector2> arriveSB = new Arrive<Vector2>(steerable).setTarget(squadComp.targetLocation).setTimeToTarget(0.001f)
.setDecelerationRadius(2f).setArrivalTolerance(0.0001f);
SteeringBehavior<Vector2> sb = arriveSB;
RadiusProximity<Vector2> proximity = new RadiusProximity<Vector2>(steerable, squadComp.friendlyAgents, 3.0f);
Separation<Vector2> separationSB = new Separation<Vector2>(steerable, proximity);
BlendedSteering<Vector2> blendedSteering = new BlendedSteering<Vector2>(steerable) //
.setLimiter(NullLimiter.NEUTRAL_LIMITER) //
.add(separationSB, 10000f)
.add(arriveSB, 0.5f);
sb = blendedSteering;
Components.FSM.get(entity).changeState(SquadComponent.DEFAULT_STATE);
Components.STEERING_BEHAVIOR.get(entity).setBehavior(sb);
entity.add(steerable);
engine.addEntity(entity);
return entity;
}
项目:gdxjam-ugg
文件:TargetPlayerShipCommand.java
@Override
public boolean execute() {
final Array<Object> args = cma.getArguments();
Player player = (Player) args.get(0);
float x = (float) args.get(3);
float y = (float) args.get(4);
GameEntity gameEntity = player.mainEntity;
if(gameEntity.getCurrentState() != MainShipState.Damaged) {
boolean hasTarget = false;
Array<Body> aabbFound = Box2dUtils.queryAABBInput(x, y);
if(aabbFound.size > 0) {
for(Body b : aabbFound){
GameEntity abbEntity = (GameEntity) b.getUserData();
GameEntityType entityType = Mappers.gameEntityType.get(abbEntity.entity).type;
if(entityType == GameEntityType.Enemy || entityType == GameEntityType.Scenario) {
LockOnComponent lockOnComponent = Mappers.lockOn.get(gameEntity.entity);
if(lockOnComponent == null)
lockOnComponent = gameEntity.addComponent(LockOnComponent.class);
lockOnComponent.origin = gameEntity;
lockOnComponent.target = abbEntity;
gameEntity.changeState(MainShipState.LockOn);
hasTarget = true;
break;
}
}
}
if(!hasTarget){
SteeringBehaviorComponent steeringBC = Mappers.steeringBehavior.get(gameEntity.entity);
Steerable steerableC = Mappers.steerable.get(gameEntity.entity);
Arrive<Vector2> arrive = (Arrive<Vector2>) gameEntity.getBehavior(Arrive.class);
if (arrive == null) {
SteerLocation location = new SteerLocation();
arrive = new Arrive<Vector2>(steerableC, location);
arrive.setArrivalTolerance(0.5f);
arrive.setDecelerationRadius(10f);
arrive.setTimeToTarget(0.005f);
}
arrive.setOwner(steerableC);
gameEntity.cacheBehavior(steeringBC.behavior);
steeringBC.behavior = arrive;
arrive.getTarget().getPosition().set(x, y);
gameEntity.changeState(MainShipState.Ready);
}
}
return true;
}
项目:DarkDay
文件:PlayScreen.java
public PlayScreen(DarkDay game, SpriteBatch sb) {
this.game = game;
this.spriteBatch = sb;
gamecam = new OrthographicCamera();
stage = new Stage();
Gdx.input.setInputProcessor(stage);
conf = new ConfFacade();
conf.initConfs(208, 400, 32, 10);
touchpad = conf.getTouchPad();
stage.addActor(touchpad);
viewport = new ScreenViewport(gamecam);
debugRenderer = new Box2DDebugRenderer();
world = new World(new Vector2(0, 0f), true);
builder = new BodyDirector(new DynamicBodyBuilder(world,viewport.getCamera().viewportWidth / 2 + 3, viewport.getCamera().viewportHeight /2 + 3, 32f , 32f, 1.0f, false ));
builder.setBuilder();
entity = new B2dSteeringEntity(builder.getBody(), 10);
builder = new BodyDirector(new DynamicBodyBuilder(world, viewport.getCamera().viewportWidth / 2, viewport.getCamera().viewportHeight /2, 32f , 32f, 1.0f, true));
builder.setBuilder();
player = new Player(builder.getBody(), viewport ,touchpad);
target = new B2dSteeringEntity(builder.getBody(), 10);
rayHandler = new RayHandler(world);
rayHandler.setAmbientLight(.2f);
rayHandler.setShadows(true);
rayHandler.setBlurNum(1);
ptLight = new PointLight(rayHandler, 150, Color.CYAN, 6, 0, 0);
ptLight.attachToBody(builder.getBody());
ptLight.setSoftnessLength(0f);
for (int i = 0; i < 800; i++){
builder = new BodyDirector(new StaticBodyBuilder(world, (float) Math.random() * 100, (float) Math.random() * 100, (float) Math.random() * 50, 128f, 1.0f, true));
builder.setBuilder();
}
Arrive<Vector2> arriveSB = new Arrive<Vector2>(entity, target)
.setTimeToTarget(0.01f)
.setArrivalTolerance(2f)
.setDecelerationRadius(10);
entity.setBehavior(arriveSB);
}