【发布时间】:2021-07-31 17:57:44
【问题描述】:
我有一个简单的横向滚动平台游戏,其中玩家是一个球,我希望他在移动时旋转,看起来像是在滚动。
但是,我设置了 2D 相机,因此播放器位于屏幕的底部中心。我希望玩家呆在那里,但是当我移动玩家时,相机会随着玩家转圈。
如何阻止相机移动?
【问题讨论】:
我有一个简单的横向滚动平台游戏,其中玩家是一个球,我希望他在移动时旋转,看起来像是在滚动。
但是,我设置了 2D 相机,因此播放器位于屏幕的底部中心。我希望玩家呆在那里,但是当我移动玩家时,相机会随着玩家转圈。
如何阻止相机移动?
【问题讨论】:
想到几个选项:
PhysicsBody2D(例如KinematicBody2D)和Sprite或类似的。而Camera2D 是PhysicsBody2D 的子代。好吧,旋转Sprite。这样旋转不会影响Camera2D。 当然,如果旋转是由物理驱动的,那么这个选项就没有用了。
Camera2D 成为您的PhysicsBody2D 的子代以使其跟随它。相反,您可以使用RemoteTransform2D 将其位置(使用update_position = true)而不是其旋转(使用update_rotation = false)推到另一个Node2D。然后你让你的Camera2D 成为另一个Node2D 的孩子。PhysicsBody2D 的孩子。在这种情况下,您可以尝试PinJoint2D。将node_a 设置为字符PhysicsBody2D,将node_b 设置为某个RigidBody2D,然后Camera2D 可以是RigidBody2D 的子代。Node2D 并在其_physics_process 上将您角色的global_position 复制到它自己的global_position,以便它跟随它。然后将Camera2D 设为Node2D 的子级。【讨论】: