Articles of python

Mobu:Motion文件Unity命名scheme

当导出采用Motionbuilder 2014中的几个fbx文件并使用File> Motion File Export …时 ,文件命名如下: file_Take1.fbx file_Take2.fbx file_Take3.fbx 为了将运动文件正确加载到Unity中,我必须将它们重命名为: file@Take1.fbx file@Take2.fbx file@Take3.fbx 必须用“@”代替下划线对于小型项目来说是好的,但是在处理大型项目中的许多工作时会花费很多时间。 有没有办法通过首选项或Python脚本更改MotionBuilder中的默认命名scheme,以便默认的下划线replace为“@”?

TCG – 如何将卡编程为独立的实体

所以我打算尝试制作一个纸牌游戏(Java),但我不确定最好的devise方式是什么。 我理解引擎的东西,但不知道卡应该如何编码,他们应该如何与引擎进行交互。 范围如下所示: 我们有一个理解游戏stream程的引擎。 它知道你在开始时抽牌,在某个时候打牌,有一个战斗的步骤,并结束转(切换球员)。 这很好,但关心的是卡片本身。 我想有卡是他们自己的实体。 我不确定是否会更好: a)让每张卡片成为自己的class级b)将每张卡片编程为外部脚本(用Python表示) 我希望游戏引擎尽可能less地了解一张牌。 当你玩牌时,我想让游戏引擎去: 你在玩牌 你有资源吗? 问卡要多less钱,然后确认你有。 当一张卡片有交互作用时,我希望它尽可能地做到这一点。 例如,如果卡片上说要画一张卡片,我希望它能够强制地告诉引擎抽出一张卡片,或者更好地挂钩游戏,画一张卡片,然后强制引擎更新自己。 极端的情况下可能会提供更好的描述,所以如果有一张卡片说“玩家在回合开始时不画”,引擎通常会自动绘制,所以我们不得不停下来。 我可以合理地编程,在每次交互之前引擎会检查是否有任何特别的事情发生,并且会看到“跳过绘制”。 即使如此,我将如何编程呢? 我会在引擎中写一个方法来跳过绘图,然后让牌将其添加为一个特殊的触发器? 我真的有卡(可能编程在Python中)挂钩到引擎,并结束绘制方法? 最好的办法是什么呢?

如何使精灵移动到另一个使用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 […]

Pygame的sprite.collide_circle()缺less几个正面碰撞帧

我花了好几个小时试图弄清楚为什么我的碰撞检测是如此糟糕,当我注意到罪魁祸首可能是pygame的检测callbackpygame.sprite.collide_circle()时,精灵明显地歪曲了几帧。 我已经剥离了代码并创建了一个简单的演示,结果令人惊讶: collide_circle()在其兄弟collide_rect()正确检测到碰撞并返回True后仍然返回False几帧。 这里是代码: import pygame RED = (255, 0, 0) GREEN = ( 0, 255, 0) BLUE = ( 0, 0, 255) BLACK = ( 0, 0, 0) WHITE = (255, 255, 255) SCREEN_SIZE = (800, 600) FPS = 60 BG_COLOR = BLUE class Ball(pygame.sprite.Sprite): def __init__(self, color=WHITE, radius=10, position=[], velocity=[]): super(Ball, self).__init__() self.color […]

在基于单位的游戏中实现蒙特卡洛树search

我有这个简单的冒险游戏,我想开发一个AI。 Players在地图上移动他们的Units ,并完成一个简单的战斗决议。 每轮有100ms的时间限制,AI有完整的信息,对抗分辨率是确定性的,但是单位每轮同时移动。 就我所了解的蒙特卡洛方法而言,我需要复制当前一轮的状态,生成一个新的游戏状态树,随机播放或者进行评估。 目前我的zones保持每个unit的列表,他们通过存储orders四处移动。 他们被保存在每个回合的字典中,并在回合结束时被应用。 深度复制大约需要3ms,而且考虑到时间限制,我认为太慢而不能有效使用。 我想知道是否可以使用这个订单系统通过应用和撤消它们来更快地生成树,但是我还不能把自己的想法包括在内。 这是我目前的课程devise: 我怎样才能有效地为这种游戏添加MCTS?

一旦pygame发声

我正在尝试播放背景音乐,音乐一直在播放。 我试图使用music.busy ,但我无法弄清楚。 我希望它检查声音/音乐是否正在播放,然后我希望它打印“正在播放音乐”。 如果声音/音乐不播放,我希望它启动一首新歌曲并循环播放。 def musica(): if pygame.mixer.music.get_busy() == True: print("music is playing") if pygame.mixer.music.get_busy() == False: music.play(loops=-1)

OpenGL绘制精灵的sorting

我将采用自顶向下的方法,其下方的对象将出现在其上方。 因此,Y值决定了它是否重叠(想象一下纸牌游戏中纸牌的堆叠方式,每张纸牌下方的纸牌确保它在最上面)。 角色精灵将移动并不断改变其顺序(以及任何效果或其他世界对象)。 我已经尝试过的事情不起作用:为每个订单单独绘制组。 不幸的是,由于地图,游戏对象和精灵的庞大规模,它需要每个Y轴都有自己的组,导致数百个绘制组。 这杀死了性能太多。 我已经尝试z深度sorting,问题是阿尔法混合不再正常工作,因为它通常。 所以褪色精灵和其他阿尔法混合模式显示不正确。 我已经尝试了所有可能的值的摆弄组合,以得到这个工作,但没有骰子。 我曾尝试使用一个大的有序的VBO,它的工作,但问题是它需要一切需要订购在相同的纹理地图集。 虽然不错,如果我想制作一个更大的游戏,不可能将所有的资源都放在一个纹理中。 尤其是世界+人物+特效。 我发现的唯一的工作是使用旧的OpenGL固定function,并一次绘制每一个,并使用列表sorting,以确保顺序。 但是这意味着没有着色器和性能缺陷。 我已经用尽了谷歌和实验的选项。 我宁愿不使用固定function,如果我可以帮助它,但我现在真的没有看到任何其他的方式。 我想知道是否有其他的select。

无需请求就可以在Unity播放器中推送数据

我有一个unity3d播放器,我需要从服务器的一些数据 。 服务器代码是用python写的,而客户端是C#。 现在我正在寻找一种服务器直接发布/推送数据到我的团结球员的方式 。 IMO! 不需要使用WWW类的服务器就可以将数据推送到统一的播放器。 我的问题是可以将数据发送到我的客户端统一播放器? 有类似的东西 response = requests.post(client_url, data = request_data, headers = headers) 我想这样做,因为我想避免重复调用服务器,这不是一个有效的方法。

移动时调整角色的武器

我正在为Python的Cocos2dtesting游戏(代码有点肮脏)。 我试图在同一时间跑步和射击,而且每次开火时我的角色(跑步)腿都不会回到开始位置。 所以它运行,将有自由拍摄。 代码使用一个自定义的动作类(PlatformerController),它是在一个Sprite上实现的,该Sprite被放置在它自己的图层上。 有三个代表角色的精灵:它的胳膊和身体。 代码检查玩家是否正在运行。 如果是的话,那么它会消除玩家的arm,并用枪支replace它们。 如果我更换跑步的身体,这也可以正常工作,但是如果我只是在保持跑步身体的情况下取下arm并将其更换,arm会立即添加到身体后面。 也许有人有更好的建议呢? 我试过了: 使用一个单独的平台控制器的武器 将每个arm精灵与人物的身体alignment 在arm上使用相同的身体位置 使用内置移动(间隔动作,不同于自定义动作类)的类 这里是完整的代码(应该注意的是,我添加了“标签”参数到精灵): import pyglet from pyglet.window import key from pyglet.image import load_animation import cocos from cocos import layer, mapcolliders, actions, tiles, sprite, scene from cocos.director import director import cocos.euclid as eu import cocos.collision_model as cm class evaHero(layer.ScrollableLayer): def __init__(self): super(evaHero, self).__init__() theAnim […]

控制Unity游戏的Python脚本

我希望在Unity中构建一个简单的游戏,使游戏中的对象可以通过Python脚本(或任何其他编程语言中的代码)进行控制。 这可能吗? 如果是,那么如何? 如果没有,那么有没有其他的办法可以达到类似的结果呢? 为了使其更清楚,假设我在当前场景中有10个对象。 我想要做的是通过Python分别处理每个对象。 这样做的一种方法是设置键盘绑定来select一个特定的对象,然后使用键盘和鼠标事件来控制这个对象。 但是,有没有更干净(原生)的方式呢?