网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月29日漏签0天
godot吧 关注:9,739贴子:42,927
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 12回复贴,共1页
<<返回godot吧
>0< 加载中...

关于实例化的ik骨骼指向问题

  • 只看楼主
  • 收藏

  • 回复
  • wdaksldm
  • 动画特效
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这是我的树结构


这是我的ik骨骼绑定




一个对象可以很好运行并执行动画,但两个就遇到了这样的境况
用代码实例化出来第二个的骨骼人物一直指向第一个骨骼人物的指向,我该怎么解决?问gpt说动态设置但给的代码没用,有没有教程或大佬教我一下,求求了


  • 雷伊盖亚0
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
可能资源共享导致的问题?你试试把Modification stack这个资源唯一化,右边的下拉按钮应该能看到唯一化递归,把子资源也唯一化


2025-12-29 16:30:03
广告
不感兴趣
开通SVIP免广告
  • wdaksldm
  • 动画特效
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

这样算是实例化成功了吗,但打开还是

还是指向第一给实例,求大佬看看是什么问题


  • wdaksldm
  • 动画特效
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
因该是成功了, 但是显示了这个,找不到目标节点了


  • wdaksldm
  • 动画特效
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我发现我唯一话成功了但是坐标位置
没有变化


  • wdaksldm
  • 动画特效
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这是我的代码部分
extends Node2D
# 预加载并获取 Marker2D 组件(IK 目标点)
@OnReady var right_hand_2: Marker2D = $Node2D/right_hand2 # 右手目标点
@onready var left_leg_2: Marker2D = $Node2D/left_leg2 # 左腿目标点
@onready var left_hand_2: Marker2D = $Node2D/left_hand2 # 左手目标点
@onready var right_leg_2: Marker2D = $Node2D/right_leg2 # 右腿目标点
@onready var skeleton: Skeleton2D = $"." # 获取当前节点的 Skeleton2D
@onready var animation_tree: AnimationTree = $"../../AnimationTree"
var modification_stack
func _process(delta: float) -> void:
var modification_stack = skeleton.get_modification_stack()
modification_stack.setup()
func _ready():
var modification_stack = skeleton.get_modification_stack()
# 获取当前实例的唯一 ID
var instance_id = str(get_instance_id())
#print("实例 ID: ", instance_id)
# 打印检查 Marker2D 是否正确唯一化
_print_marker_names()
_update_ik_targets()
func _update_ik_targets():
var modification_stack = skeleton.get_modification_stack()
if modification_stack:
for i in range(modification_stack.get_modification_count()): # 遍历所有修改器
var mod = modification_stack.get_modification(i) # 获取第 i 个修改器
if mod is SkeletonModification2DTwoBoneIK:
var bone_name:String = mod.get_joint_one_bone2d_node() # 获取骨骼名称并转换为小写
# 根据骨骼名称匹配正确的 Marker2D 目标
match bone_name:
"body/Right_hand":
print(mod.target_nodepath)
mod.target_nodepath = right_hand_2.get_path()
print(mod.target_nodepath)
"body/Left hand":
mod.target_nodepath = left_hand_2.get_path()
"body/Left_leg":
mod.target_nodepath = right_leg_2.get_path()
"body/Right_leg":
mod.target_nodepath = left_leg_2.get_path()
mod.set_enabled(true) # 启用 IK 修改器
# 确保所有修改器生效
modification_stack.enable_all_modifications(true)
modification_stack.setup()
func _print_marker_names():
print(right_hand_2)
print(right_hand_2.position)


  • wdaksldm
  • 动画特效
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • wdaksldm
  • 动画特效
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
坐标变了,发现问题了,第二个实例的坐标是指向第一个实例的,没有指向自己实例的坐标


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 12回复贴,共1页
<<返回godot吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示