- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在问这个之前,我在网上做了很多搜索。我就是做不到。我有点难以理解。那么我如何在正确的屏幕位置绘制图像,对应于世界位置的 body ?谢谢。
如果其他人在相同的障碍前发现他自己,我发布了一个 HOW TO,感谢 normalocity 的良好解释。你可以在这里找到它:http://romeo.akademx.ro/2012/04/06/slick-and-box2d/
这是渲染函数:
public void render(GameContainer container, StateBasedGame game, Graphics g)
throws SlickException {
g.setBackground(Color.white);
g.pushTransform();
g.translate(worldToScreen(body.getPosition()).x, worldToScreen(body.getPosition()).y);
g.rotate(15, 15, (float) Math.toDegrees(body.getAngle()));
part.draw();
g.popTransform();
g.drawString("Count: " + cont, 5, 40);
//world.drawDebugData();
}
public Vec2 screenToWorld(Vec2 screenV) {
return new Vec2((screenV.x - offset.x) / scaleFactor, yFlip
* (screenV.y - offset.y) / scaleFactor);
}
public Vec2 worldToScreen(Vec2 worldV) {
return new Vec2(worldV.x * scaleFactor + offset.x, yFlip * worldV.y
* scaleFactor + offset.y);
}
最佳答案
如果您所做的只是在 2D 世界中绘制 Sprite ,那么基本上您需要跟踪两件事,以便决定在屏幕上绘制哪些 Sprite 以及在屏幕上的哪个位置绘制它们。您必须将 Sprite 视为存在于世界上的某个位置,而您在屏幕上看到的只是世界的一种 View ,专注于某个区域。
您需要跟踪的两件事是:
(0, 0) +x
+------------------>
|
+y |
| * <= example sprite in your world @ coordinates (x=200, y=200)
|
\ /
x
协调。当它们“向左”移动时,它们会减小
x
协调。当“向上”移动时,它们
减少他们的
y
坐标(因为
y
向下增加,在监视器显示上),并且当“向下”移动 Sprite 时
增加他们的
y
协调。
(x=500, y=500)
.那看起来像:
(0, 0) +x
+---------------------------------->
|
+y |
| * <= example sprite in your world @ coordinates (x=200, y=200)
|
|
| +===================+
| | the area |
| | that the camera |
| | "sees" and |
| | shows on your |
| | screen |
| +===================+
\ /
(x=1524, y=1268)
。
(0, 0) +x
+---------------------------------->
|
+y | +===================+
| | |
| | * <= sprite |
| | |
| | | <= camera's view of the world
| +===================+
|
|
|
|
\ /
(200, 200) (1224, 200)
+===================+
| |
| * |
| |
| |
+===================+
(200, 968) (1224, 968)
render
里面的方法
this file ,并特别注意
startX
,
startY
,
stopX
,
stopY
变量,对我来说控制我要绘制的 Sprite 区域。还应该注意的是,我的 Sprite (或“行人”)存在于
TileMap
上。 ,所以它们的大小不是 1 像素——它们有自己的宽度和高度。这给如何决定要绘制的内容增加了一点复杂性,但基本上归结为“绘制相机 View 内的内容,以及边缘周围的一些额外内容”。
关于java - Slick2D 和 JBox2D。如何绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9997006/
我正在使用stephanwagner jBox 来完成以下任务。 我有一个列表链接,例如: Delete First Delete Second Delete Third Delete Fourth
我刚刚浏览了 jBox.js 的代码,发现了以下代码片段: var appendImage = function(gallery, id, preload, open) { if (jQuery(
我刚刚试用了这个名为 jBox.js 的插件,发现了一些新选项。这是一个非常可定制的插件。我说的选项是 adjustDistance . documentation说,你可以传入一个整数或对象,像这样
我有这个page (这仍在进行中)其中包含一些图像的缩略图,单击这些缩略图会弹出更大的版本;我正在使用 jBox来完成这个。我正在尝试让更大的图像以响应方式运行。但是什么也做不了! 我通过检查器检查过
当我点击文本框 jbox.js 时显示工具提示,我希望当文本框聚焦时显示工具提示以及当未聚焦时显示工具提示隐藏。 脚本: $(document).ready(function() { $('
我正在使用 jBox 网址:http://stephanwagner.me/jBox . 并在每次点击链接时创建一个模式。首次创建模态时,将在“onCreated”属性上添加该已创建模态上按钮的监听器
这个问题已经有答案了: What does suffix 'f' mean in Java code? (5 个回答) 已关闭 9 年前。 它似乎用在引擎中的值声明中,但 JBox-2D 的文档没有解
快速提问,我在 jBox 中加载 div 时遇到问题(一个简单的 jquery 弹出脚本)。这是我正在使用的代码 $(document).ready(function() { var MJB
我已经搜索了大约 2 个小时,并阅读了方法和教程,但由于某种原因我的程序仍然没有按预期运行。 我想将包含一个包含一些按钮的框的面板放在屏幕中央。有一种方法可以使用 RigidBox 来做到这一点,但它
我是一名优秀的程序员,十分优秀!