我正在努力使我的游戏更有活力,使攻击命中盒可伸缩。但是,当向当前CollisionShape添加新形状时,它在打印时会显示正确的半径,但是半径增量与新值不对应。
我目前使用的代码如下:
var shape = CylinderShape.new()
shape.set_radius(new_radius)
shape.set_height(new_height)
$Spatial/CollisionShape.shape = shape在运行这个程序时,我尝试打印当前的CollisionShape.shape.radius,它显示了新的数字,但是,对于碰撞的形状仍然是旧的,没有什么改变(无论是在视觉上还是在测试碰撞大小时,调试选项都是如此)。
因此,我的问题是:如何在运行时更改形状或大小。
我已经尝试过的事情:
$Spatial/CollisionShape.shape.radius = new_radius
$Spatial/CollisionShape.shape.height = new_height不幸的是,这也产生了同样的结果。在将新形状放入CollisionShape之前,我还尝试使该形状为空。这也没什么改变。
我是不是遗漏了什么?
发布于 2021-05-21 10:00:36
看起来更新碰撞形状是不可能的,你必须创建一个新的。我这样解决了它,其中我有一个CSGBox,它拥有一个StaticBody,它拥有一个CollisionShape,我想让静态物体的碰撞形状与CSGBox匹配:
var box : BoxShape = BoxShape.new()
box.extents.x = self.width/2
box.extents.y = self.height/2
box.extents.z = self.depth/2
$StaticBody/CollisionShape.shape = box(此脚本附加到CSGBox)。
https://stackoverflow.com/questions/62346576
复制相似问题