我目前创建了一个动态的身体,并且用Vector2()以恒定的速度移动。我想要的是当身体离开屏幕边缘时,立即从当前点回到原点。我该怎么做?
a.applyForceToCenter(aMovement, true);
a.applyTorque(3000, true);
FixtureDef fDef = new FixtureDef();
BodyDef ballD = new BodyDef();
ballD.type = BodyType.DynamicBody;
//random location for asteroid
int aLoc = (int) (aLocation * 15);
float x = 300;
switch(aLoc)
{
case 0:
ballD.position.set(x, -105);
break;
case 1:
ballD.position.set(x, -95);
break;
case 2:
ballD.position.set(x, -80);
break;
case 3:
ballD.position.set(x, -65);
break;
case 4:
ballD.position.set(x, -50);
break;
case 5:
ballD.position.set(x, -35);
break;
case 6:
ballD.position.set(x, -20);
break;
case 7:
ballD.position.set(x, -5);
break;
case 8:
ballD.position.set(x, 10);
break;
case 9:
ballD.position.set(x, 25);
break;
case 10:
ballD.position.set(x, 40);
break;
case 11:
ballD.position.set(x, 55);
break;
case 12:
ballD.position.set(x, 70);
break;
case 13:
ballD.position.set(x, 85);
break;
default:
ballD.position.set(x, 0);
}
PolygonShape asteroid = new PolygonShape();
asteroid.setAsBox(12.5f, 12.5f);
//asteroid definition
fDef.shape = asteroid;
fDef.density = .5f;
fDef.friction = .25f;
fDef.restitution = .75f;
a = world.createBody(ballD);
a.createFixture(fDef);
a.setFixedRotation(false);
//asteroid image
aSprite = new Sprite(new Texture("img/asteroid-icon.png"));
aSprite.setSize(12.5f * 4, 12.5f * 4);
aSprite.setOrigin(aSprite.getWidth() / 2, aSprite.getHeight() / 2);
a.setUserData(aSprite);
asteroid.dispose();
您可以使用以下选项:
body.setTransform(newX, newY, newAngle);
body.setAwake(true);
唤醒身体很重要。它可能目前处于非活动状态,如果不唤醒它,重力或任何直接碰撞都不会在新位置影响它。
您可以通过以下方法立即设置Box2Da
主体的位置:
a.setTransform(新x、新y、新角度)
这样,当主体的x或y值在屏幕之外时,可以创建一个条件,将主体的x和y位置设置回其原始位置。
if(outsideBounds()){
a.setTransform(start_x, start_y, start_angle);
}
可以通过检查对象的Box2D位置及其转换的屏幕坐标,或通过检查精灵的位置来检查对象是否在屏幕外。
收到x和y屏幕位置后,可以将其与屏幕边界进行比较,如下所示:
<代码>pos_x
这可以通过包含对象的尺寸来改进,具体取决于您希望何时进行变换:
(pos_x-objWidth)>screenWidth || (pos_x+objWidth)<0 ||
(pos_y-objHeight)>screenHeight || (pos_y+objHeight)<0
您可以使用Body.setTransform()
执行该任务,但我不会这样做。
对我来说,这会导致奇怪的虫子。例如,使用setTransform
在随机时刻禁用了我的ContactFilter
,这花费了我几天的调试时间,直到我找到它。
此外,它还会导致非身体行为,因为你基本上是在传送身体。
最好是彻底销毁主体
,并在旧主体相同的初始位置重新创建一个新主体。
嗨,我正在开发swing应用程序,但我面临一个问题。 当我第一次运行application时,它位于我决定设置组件的适当位置。但问题发生在 我最小化&再次最大化框架窗口自动更改它的位置。 我哪里出错了?
我有一个无休止的跑步游戏,我的主角有一个物理身体,我用它来处理跳跃 在他撞上障碍物之前,一切都很好。他开始后退,我希望他一直保持在他的x位置。 我尝试将身体动态设置为NO,但这停止了跳跃。 我该怎么做?我不想让角色在x轴上移动。
我正在做Liferay 6.2项目。在Liferay中,他们使用了Vaadin。当我点击一个按钮时,它会打开一个不同的iframe。我可以为所有功能编写代码。现在我想使用WebDriver将光标移动到iframe元素。因为当我将鼠标移动到iframe复选框之后,我的自动脚本就可以运行了。我想自动化一个脚本,将鼠标指针移动到元素。 我已经尝试了下面的代码,但它不起作用。 1) 使用动作移动元素: 2
是否可以更改Apache使用的的位置?当我做时,结果是: 路径= 已加载配置文件 但是的结果是 配置文件(php.ini)路径: /etc 我可以将从复制到,但是可以更改php.ini文件夹吗? 我使用自制软件安装PHP,我使用的是OS X Snow Leopard。
我试图用任何逻辑来模拟生产中的劳动力短缺。我将工人设置为一个资源池,使用轮班计划定义产能,定义不同轮班的工人数量。我试图包括一个事件模块,在模拟过程中更改每个班次的劳动能力。然而,anylogic向我显示了一个错误,即我无法动态更改轮班组大小。是否有任何变通方法允许这种情况发生?非常感谢。
问题内容: 有什么办法可以使用CSS从左到右或从下到上更改滚动条的位置? 问题答案: 仅使用CSS: 左右翻转: 工作小提琴 顶部/底部翻转: 工作小提琴