我目前正在创建我的第一个 godot 项目,一个蛇克隆,只是不明白为什么它不能按预期工作。我尝试使用 sprite.set_texture() 更改代码中蛇精灵的纹理。使用 sprite.set_texture(sprite.texture2) 更改纹理确实有效,而 sprite.set_texture(sprite.texture) 则不起作用。我没有收到任何错误,纹理只是没有改变。texture是精灵的默认纹理,texture2也是一个Texture2D并用@export添加。这是我的代码:
extends CharacterBody2D
@onready var sprite = $Sprite
const MOVESPEED = 200
func _ready():
sprite.global_position = Vector2(get_viewport().size / 2)
velocity = MOVESPEED * Vector2.RIGHT
func _process(_delta):
var current_direction = Vector2(velocity.x, velocity.y).normalized()
current_direction = get_movement_direction(current_direction)
if current_direction != Vector2.ZERO:
velocity = current_direction * MOVESPEED
move_and_slide()
func get_movement_direction(current_direction):
var x_movement = Input.get_action_strength("move_right") - Input.get_action_strength("move_left")
var y_movement = Input.get_action_strength("move_down") - Input.get_action_strength("move_up")
if x_movement != 0:
if x_movement == 1:
current_direction = Vector2.RIGHT
sprite.set_texture(sprite.texture)
sprite.flip_h = false
else:
current_direction = Vector2.LEFT
sprite.set_texture(sprite.texture)
sprite.flip_h = true
elif y_movement != 0:
if y_movement == 1:
current_direction = Vector2.DOWN
sprite.set_texture(sprite.texture2)
sprite.flip_v = true
else:
current_direction = Vector2.UP
sprite.set_texture(sprite.texture2)
sprite.flip_v = false
return current_direction
我已经验证这两种纹理确实存在。我真的不知道我还能检查什么。
这是错误:
不,不是。
该
texture
属性不是默认纹理。该texture
属性是当前纹理。事实上,当你这样做时:
这与执行以下操作相同:
我希望这一点足够清楚,可以理解为什么它什么都不做。