Godot:根据父坐标系移动子节点

问题描述 投票:0回答:1
首先,我阅读了有关它们的变换和矩阵运算的所有内容,但我仍然无法理解如何使用它们。

我有一个带有相机的玩家角色作为两个枢轴的子节点,如下图

此相机可以通过代码进行y轴和x轴旋转。

如果我左键单击,我希望通过代码生成一个子弹对象,rigidBody3D,将其移动到相机前面,距离假设为 1m。所以沿着它的 Z 轴,根据相机角度,它可能指向上方或下方。

然后沿同一轴施加脉冲。

这是生成子弹的代码(在玩家脚本内):

func _unhandled_input(event: InputEvent): if event is InputEventMouseMotion: if Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED: twist_input = - event.relative.x * mouse_sensitivity pitch_input = - event.relative.y * mouse_sensitivity if event is InputEventMouseButton: if event.button_index == MOUSE_BUTTON_LEFT and event.pressed: var bullet = load("res://bullet.tscn") var Bullet = bullet.instantiate() $"Twist Pivot/Twitch Pivot/Camera3D".add_child(Bullet) Bullet.position = $"Twist Pivot/Twitch Pivot/Camera3D".global_position
以下是项目符号脚本中的代码:

但是,当我启动游戏并左键单击时,子弹停留在空中,似乎在我的上方而不是在我的正前方,并且不动:

请向我解释我做错了什么,如果你知道任何好的教程或文档可能比 godot 的更容易理解,因为我似乎无法理解它的概念,我将不胜感激...

transform godot4
1个回答
0
投票
您给子弹设置了哪些物理参数?可能是你施加的推动力不足以移动它。重力和阻力的设置怎么样?

© www.soinside.com 2019 - 2024. All rights reserved.