首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在运行时更改CollisionShape (3D)的大小和形状?

如何在运行时更改CollisionShape (3D)的大小和形状?
EN

Stack Overflow用户
提问于 2020-06-12 14:39:19
回答 1查看 1.7K关注 0票数 1

我正在努力使我的游戏更有活力,使攻击命中盒可伸缩。但是,当向当前CollisionShape添加新形状时,它在打印时会显示正确的半径,但是半径增量与新值不对应。

我目前使用的代码如下:

代码语言:javascript
复制
var shape = CylinderShape.new()
shape.set_radius(new_radius)
shape.set_height(new_height)

$Spatial/CollisionShape.shape = shape

在运行这个程序时,我尝试打印当前的CollisionShape.shape.radius,它显示了新的数字,但是,对于碰撞的形状仍然是旧的,没有什么改变(无论是在视觉上还是在测试碰撞大小时,调试选项都是如此)。

因此,我的问题是:如何在运行时更改形状或大小。

我已经尝试过的事情:

代码语言:javascript
复制
$Spatial/CollisionShape.shape.radius = new_radius
$Spatial/CollisionShape.shape.height = new_height

不幸的是,这也产生了同样的结果。在将新形状放入CollisionShape之前,我还尝试使该形状为空。这也没什么改变。

我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-21 10:00:36

看起来更新碰撞形状是不可能的,你必须创建一个新的。我这样解决了它,其中我有一个CSGBox,它拥有一个StaticBody,它拥有一个CollisionShape,我想让静态物体的碰撞形状与CSGBox匹配:

代码语言:javascript
复制
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)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62346576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档