Godot 3.5运算符'-'出现'int'与'Object'无效操作数错误求助
问题解决:Godot 3.5回合制RPG随机伤害错误及重复值问题
1. 修复「Invalid operands 'int' and 'Object'」错误
你当前的代码错误在于把RandomNumberGenerator实例直接当作数值去计算HP了。randi_range()方法会返回生成的随机整数,必须把这个返回值赋值给变量后再使用,修改后的代码如下:
var rng = RandomNumberGenerator.new() rng.randomize() # 存储随机生成的伤害值 var damage = rng.randi_range(pattacks[0][1], pattacks[0][2]) ehp -= damage
如果不想单独创建RandomNumberGenerator实例,也可以直接使用全局随机方法(注意先初始化种子,见下文):
var damage = randi_range(pattacks[0][1], pattacks[0][2]) ehp -= damage
2. 解决内置rand_range重复伤害的问题
之前使用rand_range每次进入战斗伤害相同,是因为随机数种子没有初始化。在游戏的初始化脚本里(比如主场景节点的_ready()方法)调用一次randomize(),就能让每次运行游戏的随机序列都不同:
func _ready(): randomize()
不需要每次点击战斗按钮都调用randomize(),全局初始化一次即可保证随机序列的唯一性。
内容的提问来源于stack exchange,提问作者Benjamin Thomas
相关产品推荐
相关产品推荐

