在遊戲場景中,有乙個物體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...