Godot中Area节点不起作用的原因

项目场景:

        使用mac进行Godot3.5引擎开发,主要使用节点RigidBody于Area。检测刚体碰撞并触发log。      

场景节点列表

问题描述

        在使用Godot做刚体(rigidbody)于area碰撞时发现area不起作用的问题。

        研究后发现复现方法是首先在场景中放置刚体节点之后再创建area区域,这样的顺序下area是不起作用的。使用同样的节点但是首先在场景中放置area区域之后再放置刚体节点,这样是可以正常检测的。

        所以再次经过测试后发现,当area在场景树中的位置位于刚体节点上时,area起作用。但是当area节点在刚体节点下时不起作用。

不起作用时场景节点顺序
biscuit2起作用时场景节点顺序
起作用时场景节点顺序

area节点代码:(其中initPos()方法用来重置进入刚体的位置


func _on_Area_body_entered(body:Node):
	if body.get_class() == "RigidBody":
		body.initPos()
		print("check rigidbody")
	print("有物体进入")

原因分析:

area节点在场景树中的顺序决定了是否某些物体起作用


解决方案:

在Godot中当需要用到area节点时,首先创建area节点,保证其在在场景树中的顺序要在需要起作用的节点之上。

猜测:翻阅Godot官方文档,在area中没有找到类似说明,此情形根本原因未知。因为Godot在运行时的运行顺序是从场景树由上至下再向上的,所以猜测按照这个运行路线,area不起作用的情况下,刚体的计算排除了area节点。

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值