Articles of 2d

我错过了什么? (将2D鼠标转换为3D空间)

我正在制作一个有鸟瞰的networking游戏,我试图将2D鼠标坐标转换成3D空间。 现在我有一个完全平坦的网格,它打算保持完全平坦,我真正想要的只是鼠标坐标转换到这个网格。 我find了一个解决scheme,如果相机是非常直的,往下看,我认为对于我想要的就足够了,但是现在我发现,如果相机稍稍倾斜,效果会更好这与我所拥有的完全混淆了。 有人能帮我解决我失踪的问题吗? nearsourceV = GD.Viewport.Unproject(new Vector3(mouse.X, mouse.Y, 0f), camera.Projection, camera.View, camera.World); farsourceV = GD.Viewport.Unproject(new Vector3(mouse.X, mouse.Y, 1f), camera.Projection, camera.View, camera.World); mouseCoordinatesIn3D = Vector3.Normalize(farsourceV – nearsourceV); zoomMultiplier = -mouseCoordinatesIn3D.Y; zoomMultiplier = camera.CameraOffset.Y / zoomMultiplier; mouseCoordinatesIn3D = mouseCoordinatesIn3D * zoomMultiplier; mouseCoordinatesIn3D.X = mouseCoordinatesIn3D.X + camera.CameraOffset.X; mouseCoordinatesIn3D.Z = mouseCoordinatesIn3D.Z + camera.CameraOffset.Z; //Sends data and moves character […]

如何使用个性化的投影matrix来渲染模型?

我正在创造一个有很高的精灵需求的游戏。 Out团队正在考虑使用3D模型自动化精灵世代。 问题是我们有一个非常特别的主题图预测: 我们已经建立了一个很好的投影matrix。 问题是现在的3D渲染器没有一个使用自定义matrix的选项。 这种问题是如何处理的?

创建一张卡片悬挂会影响使用2D精灵

我正在为iOSdevise一个二维纸牌游戏,并使用Cocos2d。 当一个玩家拿起一张牌并拖动它时,我想让牌看起来像是从桌子上抬起,悬在手指的正下方。 所以当他们移动他们的身影时,卡片稍微延迟了一下,看起来就像是在一个stream动的animation中被拖动一样。 当玩家停止移动卡片时,会弹跳或摇摆一秒钟。 我一直在试图find一个这样做的地方,但我不能拿出任何东西,所以我想知道这是甚至可能在二维环境? 我怎么去做这个,答案可以是抽象的,即不是cocos2d。 谢谢,

在xna中生成复杂的地图

我只是想知道这个video是如何制作的。 http://www.youtube.com/watch?v=TM6kcOau5oQ 我正在网上寻找一些教程,但没有成功。 我发现的只是一些2Dvector(matrix),其中有0,1,2的值,但我认为这些地图是以不同的方式生成和存储的。 有人可以帮我或给我一些关于这些地图的建议。 我看到了一些关于独立游戏的介绍,我只是对这些游戏感到惊讶。 我想制作我自己的游戏。 我是一个初学者,已经开始XNA书和一些教程。 我想了解这些游戏是如何制作的。 谢谢!

二维视差的方法

在2D滚动平台游戏中,最有效的方法是什么,或者知道哪些视差深度应该被绘制? 下面的方法描述了试图知道哪些东西在附近,以便它们可以被绘制/绘制。 计算出哪些视差项目在附近的问题是,在计算它们的位置之前,您不知道它们在哪里。 原始post 我有一个二维数组Set<Thing>[][] ,用于存储在滚动的2D平台上的每个屏幕上出现的Thing 。 我只用它来查看当前正在渲染的位置,以免我更新不相关的对象。 我翻译世界坐标,将它们除以屏幕大小(向下舍入),然后可以查找该屏幕上的所有项目。 例如,如果屏幕是320×240像素,我查找世界坐标400,50然后400/320 = 1和50/240 = 0,所以我查找things[1][0]并更新该条目中的所有东西。 如果有物体可以移动,移动后将它们存储在正确的位置。 当有视差深度时,有什么办法可以使用这个系统吗? IE中,视差深度为1的东西无限远(因此总是出现在屏幕坐标中的相同位置),视差深度为0的东西被固定在前景。 我猜这是不可能的,因为远远超过前景将会在多个屏幕中。 还有什么其他的方法? 我见过一位经验丰富的游戏开发人员使用“滚动速度”而不是视差深度,他将相机移动距离的倒数乘以该速度来移动景物。 在这个模型中,我可以根据其他任何移动项目来处理风景,并且在移动时将其存储在二维数组中的相邻条目中,但是它是如何进入“正确的”数组槽的呢? IE,如果距离很远,可以从左边或者右边接近,我不会提前知道。 我很困惑!

弹跳球isssue

我目前正在研究二维弹跳球物理,使球弹起和击退。 物理行为正常,但最后速度保持+3,然后0不停,即使球已经停止弹跳。 我应该如何修改代码来解决这个问题? 这里是video显示它是如何工作的。 注意:Bandicam无法logging-3和0之间的速度转换。因此,当球停止弹跳时它只显示-3。 http://www.youtube.com/watch?v=SEH5V6FBbYA&feature=youtu.be 这是生成的报告: https : //www.dropbox.com/s/4dkt0sgmrgw8pqi/report.txt ballPos = D3DXVECTOR2( 50, 100 ); velocity = 0; acceleration = 3.0f; void GameClass::Update() { // v = u + at velocity += acceleration; // update ball position ballPos.y += velocity; // If the ball touches the ground if ( ballPos.y >= 590 ) { […]

基于网格的2D照明问题

我知道这个问题之前已经被问过了,但不幸的是,我对这门语言是陌生的,所以我find的复杂的解释对我毫无帮助。 我需要一个照明引擎,我已经尝试了一些程序化的照明系统。 这种方法效果最好: if (light[xx – 1, yy] > light[xx, yy]) light[xx, yy] = light[xx – 1, yy] – lightPass; if (light[xx, yy – 1] > light[xx, yy]) light[xx, yy] = light[xx, yy – 1] – lightPass; if (light[xx + 1, yy] > light[xx, yy]) light[xx, yy] = light[xx + 1, yy] – lightPass; if […]

如何在2D游戏地图中制作不同的图层

我的问题是这样的:我如何从我的spritesheet上的图纸做一个游戏地图? 我制作java 2D游戏的教程使用这种技术来制作一个游戏图:在photoshop中,我创建了一个新的文档,每个像素代表游戏地图中的一个图块。 每个瓷砖被分配一个独特的hex颜色值,从那里加载.png文件到游戏中是一件轻而易举的事情。 不过,现在我已经有了一个完整的地图,里面填满了所有的基本图块,但是它仍然是一张非常空的地图。 我要在我的草地上铺上树木,灌木,花朵。 海藻,睡莲,漂stream木和什么都不是我的水瓷砖。 各种风景,这是一个简单的游戏地图必须的。 我打算devise的这些“风景”物体中的许多大于1瓦(例如结构)。 而且不一定是整个瓷砖(有些会有透明的部分)。 我完全失去了,甚至不知道会有什么期望的答案。 我应该画一个8块瓷砖(8块瓷砖)? 我应该在基本瓷砖上画更大的物体(20×20的仓库)吗? 例如,我真正希望学到的是如何在口袋妖怪游戏中制作游戏图。 我目前的想法是在我的项目中devise一个新的类,类似于Tile类,这是一个Scenary。 像Tile一样,它将包含游戏中每个单一景物的数组,每个数组都有一个唯一的颜色代码,以.png文档中的像素表示。 表示场景和单个场景对象的起始点的像素应包含有关如何从起始位置进行渲染的信息。 如果不是完全可笑,这种方法不可能是正确的方式去。 与Tile类不同,Scenary类可能有数百个对象在其数组中。

Moai:将图像剪裁成多边形

我正在使用Moai SDK 。 我有一个图像和一些随机的凸二维多边形。 我只想显示这些多边形内的图像的部分。 这是一个示例图像: 同样的,只显示在多边形的位置: 我怎样才能做到这一点?

如何使用边界框碰撞实现在2D游戏中的跳跃?

问题: 我试图实现基本的跳转到我的2D游戏引擎,但多次失败。 基本上我迄今为止所做的是禁用重力,并使用单独的function向上移动播放器。 问题在于它看起来非常糟糕。 我已经检查了很多关于这个的线程,并find了一个应该工作的方法。 这是通过简单地增加另一个重力向上的力量。 这个力应该大于重力,但应该减小,直到重力再次变大。 问题是我无法执行它。 我的代码是用Javascript编写的,并使用html5canvas进行渲染。 注意! 这个代码只是整个引擎的一部分。 至于变数: c_objects – 玩家可以碰撞的所有对象的数组 玩家 – 对象文字与位置,宽度,移动速度,速度和速度倍增。 伪代码对我有好处,但我很想在JS中find答案。 码: // physics module collision function collision(obj_1, obj_2) { var collision = Boolean( obj_1.x <= (obj_2.x + obj_2.width) && obj_2.x <= (obj_1.x + obj_1.width) && obj_1.y <= (obj_2.y + obj_2.height) && obj_2.y <= (obj_1.y + obj_1.height) […]