game.batch.begin();
for (Array obstacle_array123: obstacle_array) {
body = obstacle_array123;
for (Body bodies: body) {
if (bodies.getUserData() instanceof Array && bodies.isActive()) {
sprites_array = (Array)bodies.getUserData();
for (int fix_pos = 0; fix_pos < sprites_array.size; fix_pos++) {
sprite = sprites_array.get(fix_pos);
if (verts.size != 0) verts.removeRange(0, verts.size - 1);
f = bodies.getFixtureList().get(fix_pos);
s = (PolygonShape)f.getShape();
transform = bodies.getTransform();
for (int i = 0; i < s.getVertexCount(); i++)
{
s.getVertex(i, tmp);
transform.mul(tmp);
verts.add(new Vector2(tmp));
}
rotation_point.set((verts.get(0).x + verts.get(1).x + verts.get(2).x + verts.get(3).x) / 4, (verts.get(0).y + verts.get(1).y + verts.get(2).y + verts.get(3).y) / 4);
sprite.setPosition(rotation_point.x - sprite.getWidth() / 2, rotation_point.y - sprite.getHeight() / 2);
sprite.setRotation(bodies.getAngle() * MathUtils.radiansToDegrees);
sprite.draw(game.batch);
}
}
}
}
game.batch.end();
我有一个游戏,我的身体是由多个方块固定物制成的,所以这是在每个方块固定物上渲染每个方块精灵的代码。
2个问题-1.st-->它只呈现数组中的第一个sprite
2.nd-->如果您查看以下循环(已解决)
for (int i = 0; i < s.getVertexCount(); i++)
{
s.getVertex(i, tmp);
transform.mul(tmp);
verts.add(new Vector2(tmp));
}
好吧,这是明显不同的相比
for (int i = 0; i < s.getVertexCount(); i++)
{
s.getVertex(i, tmp);
transform.mul(tmp);
verts.add(tmp);
}
第二个示例中生成的坐标对于正方形的半宽和半高是错误的。
当我尝试从两个例子得到协调的数字是相同的,但是当设置sprite的位置时,第二个例子发生了。
你可能应该分别问两个问题,但要回答你的第二个问题,那么它们是不同的。
在第一个中,每次通过循环时都要向verts
添加一个新的vector2
。因此verts
最终将持有不同的vector2
的负载。
在第二个版本中,您将相同的vector2
反复添加到verts
中,因此它将只有一个vector2
具有相同的值(记住Java是通过引用传递的)。
表示2D vector(二维向量)的类。 一个二维向量是一对有顺序的数字(标记为x和y),可用来表示很多事物,例如: 一个位于二维空间中的点(例如一个在平面上的点)。 一个在平面上的方向与长度的定义。在three.js中,长度总是从(0, 0)到(x, y)的 Euclidean distance(欧几里德距离,即直线距离), 方向也是从(0, 0)到(x, y)的方向。 任意的、有顺序的一对数字
描述 (Description) 此事件从对象中删除回调函数或所有事件。 语法 (Syntax) object.off(event, callback function, [context]) 参数 (Parameters) event - 它绑定一个对象。 callback - 它是对代码的引用。 context - 它是一个可以传递给回调函数的对象。 例子 (Example) <!DOCTY
描述 (Description) 它从可见区域引导导航菜单并显示主要内容。 下表列出了一些Off-canvas功能 - Sr.No. 功能和说明 1 Off Canvas Setup 您可以使用.off-canvas类和data-off-canvas属性创建画布菜单。 2 Multiple Menus off-canvas基础会在左侧和右侧创建多个菜单。 3 Title Bar 您可以使用左侧和右
存在这样的情况,其中为代理分配了本质上是阻塞的功能。 一个简单的例子是,考虑您正在从一个本身就是阻塞的文件中读取内容。 因此send-off函数将首先立即返回代理并继续执行文件操作。 文件操作完成后,它将自动使用文件内容更新代理。 语法 (Syntax) 以下是语法。 (send agentname function value) Parameters - 'agentname'是将send函数
取消绑定事件处理。 参数 名称 类型 默认值 描述 eventName string 事件名称,支持: 'click'、 'mousedown'、 'mouseup'、 'mousewheel'、 'dblclick'、 'contextmenu'。 eventHandler Function 事件处理的回调函数。 相关 on。
参数: {string | Array<string>} event (只在 2.2.2+ 支持数组) {Function} [callback] 用法: 移除自定义事件监听器。 如果没有提供参数,则移除所有的事件监听器; 如果只提供了事件,则移除该事件所有的监听器; 如果同时提供了事件与回调,则只移除这个回调的监听器。