Godot引擎有错误或意外功能



我有一些bug,但我不明白为什么它能这么工作。按+平均升档,-降档。0-关闭,1,2,3-切换。推力限制为0档-0,1档-200,2档-400,3档=600。

如果acceleration_time=0.5或1或1.95或2.1或3.3,则以下代码正常工作如果acceleration_time=2、3或4,推力不起作用。。。。推力保持在0,仅此而已。我不明白为什么?!

extends Node2D
var shift=0
var thrust=0
var acceleration_time=1 #in seconds between shifts limits
var thrust_limits=[0,200,400,600] #shift0, shift1, shift2, shift3
func _process(delta):
if Input.is_action_just_pressed("throttleUP"):
if shift<3:
shift+=1

if Input.is_action_just_pressed("throttleDown"):
if shift>0:
shift-=1

if thrust<thrust_limits[shift]:
thrust+=200*delta*(1/acceleration_time)
if thrust>thrust_limits[shift]:
thrust-=200*delta*(1/acceleration_time)

我认为您运行的是整数除法。

您将acceleration_time定义为作为int1(与作为float1.0不同(。你正在除以1/acceleration_time,也就是int除以int……这就得到了int

因此,当您有acceleration_time = 2时,您正在执行1/2,即0,这将使您应用于thrust的增量无效。


您可以为float:1.0/acceleration_time使用带小数点的文字,也可以键入变量:

var acceleration_time:float = 1

或者:

var acceleration_time:float = 1.0

或者:

var acceleration_time := 1.0

哪个类型的变量与您用来初始化它的类型。

是的,GDScript有类型。使用它们这些不仅仅是暗示。我重复一遍:这些不仅仅是暗示

最新更新