我想问一个问题,希望能为您提供建议。在我的项目中,我正在研究将要出现的不同实体,其中之一就是“ TreeEntity”。显然它由四个部分组成。 “叶子,阴影,树桩,树干”。这四个部分只有一个ID,并且在调用新的“ TreeEntity”时会随机选择。此外,根据树的年龄,树叶和阴影都有四种不同的状态。阴影将必须根据时间围绕树干旋转。现在,由于我的项目引擎希望创建尽可能通用的引擎,以便它也可以在其他项目或其他人中使用,所以我面临死胡同。
我目前有这个结果(前提是,所有使用的图像仅用于测试目的):
可以看出,阴影与行李箱非常分离。从理论上讲,可以通过修改所使用的图像来对其进行修复:
或者编写一本巨大的字典,为每个由叶子,阴影,树桩和树干组成的图像写上所有精确的锚点。
但是这样做会损害我的目标。因此,我想问您的建议是,是否使用pyglet或其他方式,而不管使用的阴影(在这种情况下为随机阴影),是否可以选择将其放置在正确位置的锚点?还是您必须修改图像或创建字典?
我的问题来自这样一个事实:我已经看过几次图像,例如阴影或其他类似我在此处插入的图像,但在这种情况下,阴影位于正确的位置。从这里开始我拍摄照片进行测试的同一游戏,受一两个机制的启发,阴影被放置在正确的位置。所以我不知道该走哪条路。
目前,所有四个部分都有一个由小词典指定的通用锚点:
__statdict = {
"leaves": {
"cell": (3, 1),
"anchor_x": "center",
"anchor_y": "bottom"
},
"shadow": {
"cell": (4, 1),
"anchor_x": "left",
"anchor_y": "bottom"
},
"stump": {
"cell": (1, 1),
"anchor_x": "center",
"anchor_y": "bottom"
},
"trunk": {
"cell": (1, 1),
"anchor_x": "center",
"anchor_y": "bottom"
}
}
在加载资源时,会分配锚点:
if self.__statdict[name]["anchor_x"] == "center":
ancx = texture.width // 2
elif self.__statdict[name]["anchor_x"] == "right":
ancx = texture.width
else:
ancx = 0
if self.__statdict[name]["anchor_y"] == "center":
ancy = texture.height // 2
elif self.__statdict[name]["anchor_y"] == "top":
ancy = texture.height
else:
ancy = 0
texture.anchor_x = ancx
texture.anchor_y = ancy
我试图做到尽可能完整。谢谢你的帮助。也许我什么都没遇到问题,解决方案比我想象的要简单,所以我很抱歉。
更新(1):
给定子画面的方向(在本例中为右侧),是否可以通过pyglet或模块将其陪伴,以了解第一个非alpha像素的位置?像这样:“ SpriteShadow的方向是向右。具有rbg值且alpha等于255的第一个像素是ay = 20(相对于sprite的宽度)。然后,我将SpriteShadow移到左侧相对于20像素的常规锚点“