actionscript-3 - 你如何使用 Actionscript 3.0 进行 "bouncing"碰撞检测? (有视频)

标签 actionscript-3 collision-detection

好吧,首先我很惊讶 actionscript 3.0 没有基于像素的碰撞检测。

无论如何,我正在使用碰撞库 found here (如果需要,我愿意选择另一个库)

recorded a video为了更好地展示我正在尝试做的事情,简而言之,我正在制作一款横向卷轴游戏(如马里奥),我希望我的地面(地板)能够像地面一样行动......当用户行走时,它会走在上面地面的,哈哈

起初我想做一个“弹跳”效果,比如“如果用户在地面以下 X 量,然后将他推上去”。这看起来不错,但我发现我能做到的唯一方法是让我的用户在接触地面后继续跳跃(视频中没有)。

那么有没有人知道如何获得它,以便当我的用户走路并且他在地面上上山时它也会使用户字符也上升?

最佳答案

今天在 reddit.com 上发布了一篇关于 pixel perfect collision detection in ActionScript 3 的文章这是您问题的碰撞检测部分。

真正的逻辑是当你检测到碰撞时该怎么做。但是,您是否注意到大多数横向卷轴游戏都使用平坦的行走表面?

一个想法(不需要碰撞检测)是使用类似高度图的想法。您可以使用数组(或纹理中的像素)来确定沿表面的每个地面部分的高度。当您的角色在场景中移动时,您只需将角色的位置索引到您的高度图中。

// How many pixels each index of the heightMap contains.
// You'll probably want to use the same value as the distance
// your character moves when the move left/right key is pressed.
const SECTION_SIZE:int = 10; 

// Fill this as a huge array with all the heights and
// the size of this will be (mapHorizontalLengthInPixels / SECTION_SIZE).
// Each element will be the distance from the top of the screen to 
// place the character so it looks like it is standing on the ground.
var heightMap:Array = [ /* ... */ ];

// TODO: you might want to Tween to this value so it doesn't look chunky
character.y = heightMap[character.x / SECTION_SIZE];

要使用纹理而不是数组,只需将本应放入 heightMap 数组的每个 int 放入 BitmapData 对象的单个像素中。使用纹理的优点是您可以将大量信息存储在一个小的 BitmapData 对象中,并使用 getPixel32() 将其读出。您可以生成一次 map ,将其保存(如 png),然后将其嵌入到 SWF 中。

如果您想要花哨的东西,并且您可能想要平台、桥梁、移动物体等等……那么请使用 2d 物理引擎。已经有一些开源项目包括 APE , Box2dAS3 , Fisix , 和 FOAM除其他外。学习曲线会更高,编码更困难,但最终可能会为您带来返回。哎呀,如果您愿意,从头开始编写一个本身就是一种体验!

关于actionscript-3 - 你如何使用 Actionscript 3.0 进行 "bouncing"碰撞检测? (有视频),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1250080/

相关文章:

actionscript-3 - Flash 套接字 HTTP-POST 示例

Swift - 未检测到随机碰撞

algorithm - 检测三角形和旋转球体之间的 3D 碰撞

c++ - 准确检测正方形和圆形之间重叠的算法?

java - 向一点移动时的圆碰撞 react

ios - 让碰撞在 Apple SpriteKit 中起作用

flash - 开始使用 Molehill,我应该开始学习什么 api?

actionscript-3 - 弹性数字格式

html - Flex 到 HTML5 - 表示层(canvas、div、???)

javascript - 为什么 ExternalInterface 在 Flash ide 中可用