Articles of 精灵

有效的方法来绘制多个分离的四边形

假设我想在Direct3D 9中绘制几个分离的(可能是纹理的)四边形,每个都由两个三角形组成: 我应该如何绘制这些图片以获得最佳性能,即以下哪种方式在速度方面更好? 由4个顶点描述每个四元组,使用D3DPT_TRIANGLESTRIP并为每个四元组调用IDirect3DDevice9::DrawPrimitive ,因为它们没有连接。 用6个顶点描述每个四边形,使用D3DPT_TRIANGLELIST并调用IDirect3DDevice9::DrawPrimitive一次。 第一种方法使用较less的内存,而第二种方法只需要一个绘制调用。 然而,第二种方法似乎是可行的,只有当所有四边形具有相同的纹理时,否则将需要开关。

处理敌人精灵的创造

我正在试图建立一个基于RPG瓷砖地图的游戏。 目前我要设定敌人的精灵将以固定的path重复他们的动作。 假设我有一个级别图,它的宽度比用户可见的实际小程序大3倍。 现在我的问题是,我应该如何处理敌方精灵的创造? 我有两个select: 1)在水平加载的时候创建所有的敌人(我不想按照这个方法,因为它会占用额外的内存)。 2)创建敌人,直到水平地图对用户可见。 随着用户进一步加载新的敌人。 我想跟随这个,但是我没有任何想法。 有人可以提示我遵循这个步骤,并告诉我通常由游戏开发者跟踪的方法吗?

游戏开始后,如何根据条件产生一个精灵?

游戏开始后,如何随时在游戏中产生一个精灵? 我正在使用Flixel的FlashDevelop。 我没有尝试在override public function create(): void 。 它只在一开始就起作用。 我尝试使用if (FlxG.score == 1)但它不起作用。 我也尝试了override public function update(): void 。 它工作,它正在移动,但它留下一个精灵,使其成为一个多精灵。 我也尝试了FlxGroup,但无济于事。

限制在Cocos2dx中拖动精灵的速度

我正在尝试使用ccTouchesMoved拖动一行精灵。 我的意思是说,有一排精灵(他们是彩色的方块)排列在一起,如果我抓住一个触摸,其余的按照它。 如果一个精灵离开了屏幕,我想把它附加到其他精灵身上。 但是,如果精灵的形成速度过快,它会在附加的精灵之间产生一个微小的差距。 如何限制速度,我可以用ccTouchesMoved拖动精灵? 这是我能想到的唯一解决scheme。 如果有人有另一个建议,以防止这种精灵差距发生,我将不胜感激。 在ccTouchesBegin中,我遍历这些精灵,标记被触摸的那个(用于游戏的另一部分),并保存触点和其他精灵之间的距离。 touch = (CCTouch*)(touches->anyObject()); location = touch->getLocation(); for (int i = 0; i < grid->getGridSizeY(); i++) { for (int j = 0; j < grid->getGridSizeX(); j++) { button = grid->button(i, j); button->setDistanceX(location.x-button->getPositionX()); button->setDistanceY(location.y-button->getPositionY()); if (button->boundingBox().containsPoint(location)) { button->setTouched(true); } } } 然后在ccTouchesMoved我再次循环所有的精灵,并将其设置为始终与触摸点保存的距离相同。 touch = (CCTouch*)(touches->anyObject()); location = touch->getLocation(); for […]

在Canvas-Games中的UI

我对使用<canvas/>和WebGL进行编程相当陌生,但对HTML5非常熟悉。 到目前为止,我已经在<canvas/>上渲染了一些实体。 接下来是添加一个简单的HUD。 不过,我想知道,为HUD和UI元素使用HTML标签是不是一个好主意? 这将使他们更容易创建,但也许会对性能产生重大影响。 是否值得做一个<canvas/> – 只有HUD引擎? 我甚至试图用<div/> -Elements来replace精灵,因为它们只是旋转和移动,所以也许一个CSS旋转更适合?

pygame – 避免精灵抖动旋转的图像

是否有一个共同的技巧,让周围的精灵改变方向“太快”,并导致他们的精灵显示不规律? 在这个项目中,玩家通过确定鼠标的X和Y坐标与它自己的obj.rect.center之间的abs()距离,在8个方向上移动。 如果绝对值小于obj.speed ,它只是移动到那个点。 如果它更大,它会移动它的速度允许它朝这个方向移动的距离。 当绘制精灵的时候, obj.direction根据obj.direction通过使用一个名为SPINNER的字典将其存储的默认值传递给pygame.transform.rotate 。 def draw(obj): drawImg = pygame.rotate.transform(obj.img, SPINNER[obj.direction]) drawCtr = drawImg.get_rect(center=obj.rect.center) DISPLAYSURF.blit(drawImg, drawCtr) 这对愚蠢的AI人物来说很好,这些人物通常只能进行很less的路线修正 – 但是,鼠标的obj.direction会导致玩家的obj.direction很快更新,看起来很混乱。 有没有简单的方法来遏制这种行为? 我的第一个猜测是让播放器对象停留在保持原有状态的值上,然后确定要应用的旋转量,但是我有一种更好的解决方法是将该责任分配给“视图”而不是“模型” ”。 我并不坚持任何有关MVC的硬性规定,但是我正试图充分区分“类似于观点的方法”对类似“模型”的对象所做的“类似于控制器”的改变,如果这是有道理的。

如何防止精灵以一定的角度移动,导致碰撞

我有两个可以以任何角度移动的小精灵。 精灵是矩形的。 我为这两个精灵创建了边界框。 每当精灵旋转时,这些框就会旋转。 他们总是围绕精灵,只有精灵。 (完全适合)。 我已经成功地实现了两个边界框的碰撞检测。 我通过检查box1是否包含box2的任何顶点以及相反的方法来做到这一点。 (我知道这种方式并不完美,因为两个矩形可以相互交叉,而不需要彼此的顶点,但是为了我的需要,这已经足够了)。 所以现在我知道两个精灵的相撞时间。 但是当两个精灵发生碰撞时,我遇到了一个问题。 当这些精灵碰撞时,我想阻止它们相互重叠(超过几个像素)。 换句话说,在碰撞时,我想让精灵只能朝着不会深入其他精灵的方向移动。 正如我所说,每个精灵都可以任意角度自由移动(游戏是为两个玩家,每个控制一个精灵)。 编辑:以不同的方式说话 – 两个精灵碰撞后,我需要找出精灵可以移动的角度范围,这将允许它移出碰撞 – 这是我可以防止用户移动在任何其他角度,在碰撞后的精灵。 我怎样才能做到这一点? 感谢您的帮助

如何使精灵移动到另一个使用vector的位置

好吧,到目前为止,我已经使精灵移动到鼠标位置。 但我有一个问题,有没有人知道如何使自己的精灵移动,而不使用从点a到点b使用向量的鼠标点击? 然后精灵在到达B点后停止 def calcMoveVector(self): movetopos = self.posto currentpos = self.rect.center directtoX = movetopos[0]-currentpos[0] directtoY = movetopos[1]-currentpos[1] vect = pygame.math.Vector2(10, 10) if vect.length() > 0: self.vector = vect.normalize() return vect for event in pygame.event.get(): if event.type==pygame.QUIT: sys.exit() if event.type==pygame.MOUSEBUTTONDOWN: mpos = pygame.mouse.get_pos() r = pygame.rect.Rect(mpos[0],mpos[1],10,10) buttons=pygame.mouse.get_pressed() if buttons[0]==True: c = pygame.color.THECOLORS["green2"] pygame.draw.rect(screen,c,r) monster.posto = mpos […]

Cocos2d / Cocos2d-x将箭头(精灵)附加到另一个身体精灵(人物)

我正在试图建立一个简单的弓箭游戏。 当箭头击中敌人身体时,箭头的身体被删除,箭头精灵继续更新,保持相对于它命中的敌人的位置正确。 画一个箭头粘在身体和身体仍然在旋转和移动。 我的问题是当敌人旋转时旋转是完全错误的。 我知道如何用matrix变换在3d中做到这一点,但我似乎无法在2d与科科斯弄清楚。 这是我的方法。 我保存箭头击中敌人的偏移量。 每一帧,我都会使精灵的旋转与敌人的旋转相匹配。 然后,我应用我最初拿的那个箭头击中敌人的偏移量。 当他们旋转,他们围绕他们各自的锚点旋转,我想知道如果我需要设置箭头的锚点的精灵中心。 有谁知道一个简单的方法来做到这一点。 如果没有,我会尝试创建一个algorithm,其中的锚点被设置为偏移量除以精灵图像的宽度和高度,希望给我正确的锚点值。 那么我想我需要重新定位精灵。 有没有人有一个更简单的方法来做到这一点?

使对象跟随精灵边缘的最简单方法是什么?

我有一个圆角的矩形精灵和另一个精灵,只是一个圆圈。 我想要圆的中心跟随圆角矩形的边缘。 有没有简单的方法来完成这项任务? 我已经看到了其他一些关于曲线和AI预测algorithm的答案,但是对于我目前的需求来说,它们似乎更加复杂。 是使用这些algorithm,我想要做什么,或者有一个更简单的方法,使一个精灵沿着另一个边缘?