Godot 引擎有错误或意想不到的功能?
Godot engine have a bug or unexpected feature?
我有一些错误,但我不明白为什么会这样。
按 + 表示升档,- 表示降档。 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
定义为 1
,它是一个 int
(不同于 1.0
,它是一个 float
)。你正在除以 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 有类型。使用它们。 这些不仅仅是提示。我再说一遍:这些不仅仅是提示。
我有一些错误,但我不明白为什么会这样。 按 + 表示升档,- 表示降档。 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
定义为 1
,它是一个 int
(不同于 1.0
,它是一个 float
)。你正在除以 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 有类型。使用它们。 这些不仅仅是提示。我再说一遍:这些不仅仅是提示。