書接上文《Godot Engine:用粒子系統實作一個波動拳的沖擊波,對,就是那個哈豆啃》
效果圖

文章目錄
- 效果圖
- HadokenBall
- HadokenBall的腳本
- 使用BoneAttachment節點來獲取手部骨骼的位置
- 隆的代碼
- 使用AnimationPlayer設定影片回呼
HadokenBall
為HadokenBall加一個腳本

HadokenBall的腳本
HadokenBall有兩個狀態:
- 在手中運氣團球的狀態:會跟隨手部運動
- 脫離手掌的狀態:勻速直線運動
下面代碼中的position_ref用于獲取手部的位置,當后來它被賦空后,就意味著HadokenBall離手了
#HadokenBall.gd
extends Particles
class_name HadokenBall
var position_ref :Spatial = null
func _ready():
add_to_group("HadokenBall")
func _process(delta):
if position_ref != null :
global_transform.origin = position_ref.global_transform.origin
else:
translation += Vector3.RIGHT * 2 * delta
func init_ball(ref):
position_ref = ref
transform.origin = position_ref.global_transform.origin
ref.get_tree().root.add_child(self)
func release_ball():
position_ref = null
使用BoneAttachment節點來獲取手部骨骼的位置
BoneAttachment節點的用法詳見老王的另一篇博文《Godot Engine:用BoneAttachment節點為骨骼附加物》

將"BoneAttachment"更名為"HadokenBallPos"

將"HadokenBallPos"定位到右手

隆的代碼
- 先預加載“HadokenBall.tscn”
- 定義兩個用于影片回呼的回呼函式,一個用于生成HadokenBall.tscn 一個用于通知其離手
#Ryu
extends Spatial
var h_ball_prefab : PackedScene = preload("res://VFX/HadokenBall.tscn")
onready var playback : AnimationNodeStateMachinePlayback = $AnimationTree.get("parameters/playback")
func _ready():
add_to_group("Ryu")
func do_combo(move_name):
playback.travel(move_name + "@Ryu")
#AnimationPlayer呼叫
func make_ball():
var h_ball : HadokenBall = h_ball_prefab.instance() as HadokenBall
h_ball.init_ball($rig/Skeleton/HadokenBallPos)
#AnimationPlayer呼叫
func release_ball():
get_tree().call_group("HadokenBall","release_ball")
使用AnimationPlayer設定影片回呼
影片回呼的使用方法詳見《Godot Engine:用Call Method Track(方法回呼軌道)實作影片回呼》


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/198808.html
標籤:其他
上一篇:逆向之制作掃雷外掛——003
