Godot 旋轉問題

2021-10-07 11:35:15 字數 1160 閱讀 6501

在遊戲場景中,有乙個物體a,有乙個初始朝向,此時如果附近出現敵人,那麼需要改變朝向,然後做一些其它事情,比如攻擊等動作,這裡要討論的就是改變朝向這個動作。

針對2d世界:

#

#向目標target旋轉

func aim(target, delta):

#計算目標向量

var target_dir = (target.global_position - global_position).normalized()

#注意當前方向受旋轉影響

var current_dir = vector2(1, 0).rotated(global_rotation)

#這裡採用了線性插值方式,類似轉身動畫

#angle計算的是與x座標的夾角,即vector2(1, 0)

global_rotation = current_dir.linear_interpolate(target_dir, delta).angle()

pass

針對3d世界:

同樣a預設向右vector3(1,0,0),需要注意的是,我們這裡僅針對y軸旋**

#正常情況下,一般是左右旋轉,繞y軸旋轉

func aim(target, delta):

#計算目標向量

var target_dir = (target.global_transform.origin - global_transform.origin).normalized()

#注意當前方向受旋轉影響,如果是vector3(1, 0, 0),意味這目前初始向右。

#注意弧度與角度

var current_dir = vector3(1, 0, 0).rotated(vector3.up , rotation.y)

#global_transform.rotated(

#這裡採用了線性插值方式,類似轉身動畫

#angle計算的是與x座標的夾角,即vector3(1, 0, 0)

#注意選擇總是針對區域性,即以初始朝向為基礎

rotation.y = current_dir.linear_interpolate(target_dir, delta).angle_to(vector3(1, 0, 0))

pass

Godot注意細節

godot中向量座標是浮點數,而不是整數。這意味著乙個vector2可以有乙個小數值,比如 1.5,1.5 由於物件不能以半數畫素繪製,這對於畫素藝術遊戲來說,可能會造成視覺上的問題,因為你要確保紋理的所有畫素都被繪製出來。為了解決這個問題,請開啟專案 專案設定,並在下面找到渲染 質量部分。側邊欄並...

譯 Godot設計哲學

每款遊戲引擎都有不同定位 滿足不同的需求。這不僅因為它們所提供的功能不同,更在於每款引擎獨特的設計。這些引擎背後各自的設計哲學,會給遊戲帶來不同的開發流程和開發方式。godot信奉物件導向設計,並以之為核心,構建出了靈活的場景系統和節點層級機制。它嘗試為你的遊戲專案提供一種直觀的結構組織方式,這種方...

Godot的場景樹

在godot中,乙個遊戲的啟動大致流程如下 簡而言之,godot的main啟動乙個程序,載入所需的驅動裝置 如渲染裝置 gl gles vulkan等 音訊裝置,輸入控制器裝置等等 然後進入主迴圈,載入乙個自動建立的物件 scenetree 場景管理系統物件,它使用者管理場景圖 這個物件包含乙個ro...