
请问这是怎么回事?跟着B站上的教程做的。但不知道为什么就出错了这里显示的是无效的名称
晚上好🌙🌙🌙
本答案参考通义千问
根据你的描述,错误信息表明在 player.gd 脚本中调用了 transition_state 函数,但该函数在 CharacterBody2D 类型的基类中不存在。这通常意味着 owner 对象不是预期的类型,或者 transition_state 方法没有正确实现。
以下是可能的解决方案:
检查 owner 的类型
owner 对象是正确的类型(例如 Node2D 或 KinematicBody2D)。owner 应该是 CharacterBody2D 类型,确保它被正确地设置为该类型。确保 transition_state 方法存在
CharacterBody2D 类是否定义了 transition_state 方法。CharacterBody2D 类中添加该方法。修正脚本中的错误
player.gd 脚本中的语法错误,例如拼写错误或不正确的语法。确保 owner 是正确的类型
extends Node
class_name StateMachine
var current_state int = -1
func _ready():
await owner.ready
current_state = 0
func _physics_process(delta: float):
var next := owner.get_next_state(current_state) as int
if current_state != next:
current_state = next
确保 CharacterBody2D 类中有 transition_state 方法
extends CharacterBody2D
func transition_state(new_state: int):
# 实现状态转换逻辑
pass
func get_next_state(current_state: int) -> int:
# 返回下一个状态
return current_state + 1
修正脚本中的错误
player.gd 脚本中的语法正确。owner 对象已经被正确地赋值。player.gdextends Node
class_name StateMachine
var current_state int = -1
func _ready():
await owner.ready
current_state = 0
func _physics_process(delta: float):
var next := owner.get_next_state(current_state) as int
if current_state != next:
current_state = next
CharacterBody2D.gdextends CharacterBody2D
func transition_state(new_state: int):
# 实现状态转换逻辑
pass
func get_next_state(current_state: int) -> int:
# 返回下一个状态
return current_state + 1
通过这些步骤,你应该能够解决 Invalid call. Nonexistent function 'transition_state' in base 'CharacterBody2D(player.gd)' 的错误。如果还有问题,请检查是否有其他地方的代码错误或配置问题。