gpt4 book ai didi

java - Box2d 箭头转换 - Java

转载 作者:太空宇宙 更新时间:2023-11-04 06:42:37 25 4
gpt4 key购买 nike

我正在使用 Box2d 支持的 LibGdx 制作弓箭手游戏。许多 Box2D 教程都是用 C++ 编写的,因此某些方法与 Java 不同。

我想做的是当箭头与盒子碰撞时粘住箭头。我找到了一个教程,但它是用 C++ 编写的,我找不到解决问题的方法。其实这是一道数学题。这是C++代码

//start with standard positions as for normal arrow creation
b2Vec2 vertices[4];
vertices[0].Set( -1.4f, 0 );
vertices[1].Set( 0, -0.1f );
vertices[2].Set( 0.6f, 0 );
vertices[3].Set( 0, 0.1f );

//now multiply by difference between arrow and target transforms
b2Transform diffTransform = b2MulT( si.targetBody->GetTransform(), si.arrowBody->GetTransform() );
for (int i = 0; i < 4; i++)
vertices[i] = b2Mul(diffTransform, vertices[i]);

b2PolygonShape polygonShape;
polygonShape.Set(vertices, 4);

//create a new fixture in the target body
b2FixtureDef fixtureDef;
fixtureDef.shape = &polygonShape;
fixtureDef.density = 1;
si.targetBody->CreateFixture( &fixtureDef );

//discard the original arrow body
m_world->DestroyBody( si.arrowBody );

目标是当箭头与盒子碰撞时,创建一个新的箭头固定装置,将其添加到盒子的主体中,然后删除旧的箭头主体。除了箭头的变换外,一切都完成了。

问题是 Java 中没有 b2MulT 或 b2Mul 函数。我想在碰撞发生时使用旧箭 header value 的位置和角度来转换箭头。

最佳答案

我不熟悉box2d,但考虑到你的程序逻辑和一点search看来 b2MulT(x,y) 是矩阵 x 转置 与矩阵 y 的矩阵乘法。

xT * y

如果 Java 没有为您提供 box2d 的精确实现,请搜索具有矩阵转置乘法的矩阵类的高效 Java 实现。

这应该可以解决问题。

顺便说一句,你检查了 box2d 的 java 端口吗 - http://www.jbox2d.org/我认为它应该实现矩阵类 - 因为矩阵乘法是所有转换的基础。

关于java - Box2d 箭头转换 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24471475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com