菜鸡求问,怎样获取一个敌人的初始坐标?
godot吧
全部回复
仅看楼主
level 1
likili 楼主
研究了一下午 弄不出来。
在脚本里写var pos = global_position
在_process(delta): 下 print(pos)
结果就是一次(0,0)
如果把var pos = global_position 写在_process(delta): 下
结果就是持续性的实时坐标
求问怎样才能获取一个怪物场景的初始入场坐标。 并且能在_process(delta): 下调用?
2023年03月15日 08点03分 1
level 1
likili 楼主
而且很奇怪
在脚本上面 非函数区域 var pos = global_position
pos的结果怎么会是(0,0)
难道脚本按照从上到下运行,运行到这句的时候,怪物其实还没有入场?
2023年03月15日 08点03分 2
不是还有个_ready()函数吗,这个就是初始化场景用的。定义的属性变量在脚本初始化开始赋值,而不是场景加入到场景树,要想在_ready生命周期里赋值,就可以在声明变量时加上onready,这样就会在_ready之后,第一次_process之前赋值
2023年03月15日 10点03分
是的,这种一般要加关键词 onready
2023年03月15日 10点03分
level 7
@OnReady var pos?
2023年03月15日 10点03分 3
level 9
你得把这个值得赋值 写在你生成怪物之后 你总得给怪物分配一个位置吧 不然就是0,0
2023年03月15日 10点03分 4
ready有个生命周期 比如你在父节点的ready给她安排位置,但是子节点的ready优先级更高,那么你在子节点获取坐标就不对,你得想一想他的执行顺序
2023年03月15日 10点03分
level 7
这时还没初始化完成呢
写在_ready()里,调用这个函数时才是初始化完成了
2023年03月15日 12点03分 5
吧务
level 13
在非函数区域写var pos
在process里写pos = global_position,print(pos)
var是声明变量,等号是给变量赋值,var pos = global_position是这两个操作的缩写;
在函数内声明的var pos生命只存在于函数结束之前;
也可以直接print(golbal_position)
2023年03月15日 12点03分 6
我看了一下你的需求,就是非函数区域声明pos,ready内给pos赋值,process里print pos
2023年03月15日 12点03分
刚才试了试 也就是说 不用var pos = null 直接var pos 就行?
2023年03月16日 12点03分
@likili
2023年03月16日 14点03分
@西瓜寻回犬 借机会问一下大佬。我刚刚开始接触godot。从哪个版本入手比较好?3.5还是4.0
2023年03月16日 14点03分
level 1
likili 楼主
终于下班了 看了看各位的回答,发现我对godot真的完全不了解。
昨天实在弄不出来 就想了个笨办法。
在非函数区域 先 var pos = null 建了个空变量
var JS = 0 建了个计数器
然后在_process(delta):下
if JS == 0:
pos = global_position
JS +=1
解决的。
先谢谢各位,现在就去试试楼上各位的办法。
其实我连 关键词onready和内置方法_ready()都不知道。。。刚用没几天,自己瞎摸索
2023年03月16日 12点03分 8
level 1
likili 楼主
经试验,直接在var pos=global_position 前面 加上 onready就行。。
或者 var pos = null
然后
func _ready():
pos = global_position
这样也行。。。
感谢楼上各位大佬。
2023年03月16日 12点03分 9
level 6
可以先看看官方文档里的入门教程和您的第一个2d3d游戏,里面都说到了
2023年03月26日 09点03分 10
1