python-3.x - 精确锚定实体上的阴影
问题描述
有个问题要问,希望得到你的建议。在我的项目中,我正在研究将出现的不同实体,其中之一是“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(相对于精灵的宽度)。然后我将 SpriteShadow 向左移动关于 20 像素的一般锚点"
解决方案
推荐阅读
- python - 限制表单提交的 HTTP POST 大小
- reactjs - 我不明白为什么 onclick 动作在电子中不起作用
- r - R包开发问题,无法安装我的R包
- javascript - Jest --watchAll 不监视 Docker 中的文件更改
- mongodb - MongoDB 的自定义记录器
- postgresql - Hasura 为某些条目返回重复项
- validation - p:selectOneRadio with required="true",如果提交未选中,不会将其 p:selectOneRadio 变为红色
- lucene - 在 Nexus 2 中搜索会产生意想不到的结果
- php - 如何从子主题运行特定页面的脚本?
- tensorflow - 使用 tensorflow.data.TextLineDataset 解析和过滤读取文本文件