本文整理汇总了Java中com.badlogic.gdx.physics.box2d.ContactImpulse类的典型用法代码示例。如果您正苦于以下问题:Java ContactImpulse类的具体用法?Java ContactImpulse怎么用?Java ContactImpulse使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
ContactImpulse类属于com.badlogic.gdx.physics.box2d包,在下文中一共展示了ContactImpulse类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: play
import com.badlogic.gdx.physics.box2d.ContactImpulse; //导入依赖的package包/类
private Sound play(PhysixBodyComponent component, ContactImpulse impulse, Sound ignore) {
if (component != null) {
ImpactSoundComponent isc = ComponentMappers.impactSound.get(component.getEntity());
if (isc != null && isc.sound != ignore && isc.lastPlayed.get() > isc.minDelay) {
float impulseStrength = Math.abs(impulse.getNormalImpulses()[0]);
if (impulseStrength > isc.minImpulseStrength) {
float speed = component.getLinearVelocity().len();
if (speed > isc.minSpeed) {
isc.lastPlayed.reset();
SoundEmitter.playGlobal(isc.sound, false, component.getX(), component.getY(), 0);
return isc.sound;
}
}
}
}
return null;
}
示例2: onContact
import com.badlogic.gdx.physics.box2d.ContactImpulse; //导入依赖的package包/类
@Override
public void onContact(B2FlxShape sprite1, B2FlxShape sprite2, Contact contact, Manifold oldManifold, ContactImpulse impulse)
{
if(_broke)
{
// The body already broke.
return;
}
// Should the body break?
int count = contact.getWorldManifold().getNumberOfContactPoints();
float maxImpulse = 0.0f;
for(int i = 0; i < count; i++)
{
maxImpulse = B2FlxMath.max(maxImpulse, impulse.getNormalImpulses()[i]);
}
if(maxImpulse > 40.0f)
{
_break = true;
}
}
示例3: postSolve
import com.badlogic.gdx.physics.box2d.ContactImpulse; //导入依赖的package包/类
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
if(impulse.getNormalImpulses()[0] > 0.01)
{
/* If body A was hit */
if(contact.getFixtureA() != null)
{
if (Actor.class.isInstance(contact.getFixtureA().getBody().getUserData())) {
Actor a = (Actor) contact.getFixtureA().getBody().getUserData();
evalDamage(a, impulse);
}
}
/* If body B was hit */
if(contact.getFixtureB() != null)
{
if (Actor.class.isInstance(contact.getFixtureB().getBody().getUserData())) {
Actor b = (Actor) contact.getFixtureB().getBody().getUserData();
evalDamage(b, impulse);
}
}
}
}
示例4: evalDamage
import com.badlogic.gdx.physics.box2d.ContactImpulse; //导入依赖的package包/类
/**
* Evaluate damage and score, and check if actor needs to be destroyed
* @param actor Current actor
* @param impulse Impulse
*/
private void evalDamage(Actor actor, ContactImpulse impulse) {
if (Destructible.class.isInstance(actor)) {
/* Hit and check final health status */
if (((Destructible)actor).getDatamageModel() == null)
return;
((Destructible)actor).getDatamageModel().hit(impulse.getNormalImpulses()[0]);
if (((Destructible)actor).getDatamageModel().getHealth() < 0.01f) {
if (!((Destructible)actor).isDestroyed()) {
/* Update score counter */
gameState.addPoints(((Destructible)actor).getDatamageModel().getPoints(),
((Destructible)actor).getDatamageModel().isEnemy());
/* Destroy actor */
((Destructible)actor).setDestroyed();
}
}
}
}
示例5: postSolve
import com.badlogic.gdx.physics.box2d.ContactImpulse; //导入依赖的package包/类
/**
* Called every time step while the fixtures are overlapping
* Gives you a chance to find out what impulses were caused by the collision response after it has been applied
*
* @param contact
* @param impulse
*/
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
//Gdx.app.log(this.getClass().getSimpleName(), "postSolve() called");
Body a = contact.getFixtureA().getBody();
Body b = contact.getFixtureB().getBody();
// If a is a player
if (a.getUserData().getClass() == PlayerSystem.class) {
// If b is a structure
if (b.getUserData().getClass() == StructureSystem.class) {
a.setUserData(BodyComponent.PLAYER_STRUCTURE_COLLISION);
}
// If b is an enemy
if (b.getUserData().getClass() == EnemySystem.class) {
a.setUserData(BodyComponent.PLAYER_ENEMY_COLLISION);
}
}
// If b is a player
if (b.getUserData().getClass() == PlayerSystem.class) {
// If a is a structure
if (a.getUserData().getClass() == StructureSystem.class) {
b.setUserData(BodyComponent.PLAYER_STRUCTURE_COLLISION);
}
// If a is an enemy
if (a.getUserData().getClass() == EnemySystem.class) {
b.setUserData(BodyComponent.PLAYER_ENEMY_COLLISION);
}
}
}
示例6: postSolve
import com.badlogic.gdx.physics.box2d.ContactImpulse; //导入依赖的package包/类
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
Fixture fixtureA = contact.getFixtureA();
Fixture fixtureB = contact.getFixtureB();
ContactListener listener = get(
fixtureA.getFilterData().categoryBits,
fixtureB.getFilterData().categoryBits
);
if (listener != null) {
listener.postSolve(contact, impulse);
}
}
示例7: postSolve
import com.badlogic.gdx.physics.box2d.ContactImpulse; //导入依赖的package包/类
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
Body bodyA = contact.getFixtureA().getBody(), bodyB = contact.getFixtureB().getBody();
PhysicsComponent physA = (PhysicsComponent)bodyA.getUserData(),
physB = (PhysicsComponent)bodyB.getUserData();
if (physA == null || physB == null) return;
physA.addCollisionNormal(impulse.getNormalImpulses()[0]);
physB.addCollisionNormal(impulse.getNormalImpulses()[0]);
}
示例8: postSolve
import com.badlogic.gdx.physics.box2d.ContactImpulse; //导入依赖的package包/类
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
Fixture fixtureA = contact.getFixtureA();
Fixture fixtureB = contact.getFixtureB();
ContactListener listener = getListener(fixtureA.getFilterData().categoryBits,
fixtureB.getFilterData().categoryBits);
if (listener != null) {
listener.postSolve(contact, impulse);
}
}
示例9: postSolve
import com.badlogic.gdx.physics.box2d.ContactImpulse; //导入依赖的package包/类
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
if (contact.getFixtureA() != null && contact.getFixtureB() != null) {
for (ComponentContactListener listener : listenerMap.values()) {
listener.postSolve(contact, impulse);
}
}
}
示例10: onContact
import com.badlogic.gdx.physics.box2d.ContactImpulse; //导入依赖的package包/类
@Override
public void onContact(B2FlxShape sprite1, B2FlxShape sprite2, Contact contact, Manifold oldManifold, ContactImpulse impulse)
{
_ghost2.removeOverlap();
if(!_ghost2.gotOverlaps())
_ghost2.setAlpha(1f);
}
示例11: postSolve
import com.badlogic.gdx.physics.box2d.ContactImpulse; //导入依赖的package包/类
/**
* Internal: This lets you inspect a contact after the solver is finished. This is useful for inspecting impulses. Note: the contact
* manifold does not include time of impact impulses, which can be arbitrarily large if the sub-step is small. Hence the
* impulse is provided explicitly in a separate data structure. Note: this is only called for contacts that are touching,
* solid, and awake.
*/
@Override
public void postSolve(Contact contact, ContactImpulse impulse)
{
if(_event == null)
return;
_event.oldManifold = null;
_event.impulse = impulse;
dispatch(contact, B2FlxContactEvent.POST_SOLVE);
}
示例12: postSolve
import com.badlogic.gdx.physics.box2d.ContactImpulse; //导入依赖的package包/类
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
AbstractWorldManager managerA=getManager(((Box2DPhysicsObject) contact.getFixtureA().getUserData()).getGrupo());
AbstractWorldManager managerB=getManager(((Box2DPhysicsObject) contact.getFixtureB().getUserData()).getGrupo());
if(managerA!=null) managerA.handlePostSolve(contact, impulse);
if(managerB!=null) managerB.handlePostSolve(contact, impulse);
}
示例13: postSolve
import com.badlogic.gdx.physics.box2d.ContactImpulse; //导入依赖的package包/类
@Override public void postSolve(Contact arg0, ContactImpulse arg1) {
// Not used.
}
示例14: postSolve
import com.badlogic.gdx.physics.box2d.ContactImpulse; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
}
示例15: postSolve
import com.badlogic.gdx.physics.box2d.ContactImpulse; //导入依赖的package包/类
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
// TODO Auto-generated method stub
}