在戈多的我的(第一个)项目中,一个简单的平台游戏,我想让角色滑动。当角色滑动时,他应该只有一个高的瓷砖,这样他就可以穿过较小的间隙。因为我不知道任何更好的解决方案,所以我更改了这样的hitbox:
(我还使用了一个单独的hitbox行走)
enum Shape {
NORMAL,
WALK,
SLIDE
}
func set_shape(name):
$NormalCShape.disabled = true
$WalkCShape.disabled = true
$SlideCShape.disabled = true
if name == Shape.NORMAL:
$NormalCShape.disabled = false
elif name == Shape.WALK:
$WalkCShape.disabled = false
elif name == Shape.SLIDE:
$SlideCShape.disabled = false
这不是一个非常好的解决方案。最近,我的代码变得更加复杂,因为我添加了不同的引力方向,这将导致12个不同的命中箱。我没有找到任何更好的解决方案,但我觉得必须有一个。
所以有人可以帮我这个吗?
答案 0 :(得分:1)
最终,您的解决方案将是最简单的解决方案,就好像您修改了Hitbox的几何形状(可以通过假设使用矩形Hitbox来编辑class Model(nn.Module):
def __init__(self, input_dim):
super(Model, self).__init__()
self.fc1 = nn.ReLU(input_dim, 64)
self.fc2 = nn.ReLU(64,32)
self.fc3 = nn.Relu(32, 8)
self.fc4 = nn.Linear(8, 3)
model = Model()
criterion = nn.MSELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
来完成)一样,您仍然必须存储所有通过在代码中编写RectExtents而不是在编辑器中对其进行修改,可以修改12个几何。
一个更简单的潜在解决方案:假设您的角色使用KinematicBody2D,只需更改您的代码,以使重力沿向下的任何方向对其施加力,然后旋转整个角色。这样,您只需要3种不同的CollisionShapes。