我如何旋转运动对象以将其聚焦在GDScript中的另一个运动对象上?

问题描述 投票:0回答:1

我正在尝试旋转一个绿色的球(阅读器)以跟随一个红色的球。我已经在绿球上贴了一个摄像头,它跟随着绿球的旋转,这正是我想要的。现在,我需要计算角度并使用Vector2做一些事情(球仅在z,x平面上移动)。我目前正在尝试用绿球脚本中的以下代码来完成此操作:

var value = 0
var player1

func _ready():
    player1 = get_transform()

func _physics_process(delta):
    var direction = player2.get_transform().origin - player1.origin
    var rotTransform = player1.looking_at(direction, Vector3(0,1,0))
    var thisRotation = Quat(Player1_t.basis).slerp(rotTransform.basis,value)

    set_transform(Transform(thisRotation, Player1_t.origin))

但是这并没有达到我的预期。这也使我的玩家无法移动,我认为这是因为set_transform也会设置位置。

有人可以告诉我我做错了什么还是建议更好的解决方案?

有关我想要的结果的更多背景图片:CLICK

3d rotation 2d godot
1个回答
0
投票

如果您想让Spatial观察一个点,只需使用look_at

旋转以使局部-Z轴指向目标位置。

首先将变换围绕给定的向上矢量旋转,然后通过围绕垂直于目标矢量和向上矢量的轴进一步旋转,将其完全对准目标。

操作在全球范围内进行。

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