如果它与鼠标处于同一位置,则停止精灵的移动
Stopping movement of sprite if it's at the same position as the mouse
我试图让精灵在 x
和 y
与鼠标相同时停止移动。
出于某种原因,一旦图像与鼠标处于相同位置,图像就会开始在同一轴上快速来回移动。我需要让它停止移动。
func _physics_process(delta):
var move_vec = Vector2()
var look_vec = get_global_mouse_position() - global_position
//this gets the mouse and sprite position
if move_vec != look_vec: // if mouse and sprite are not the same then move.
move_vec = look_vec
move_vec = move_vec.normalized()
move_and_collide(move_vec * speed * delta)
global_rotation = atan2(look_vec.y, look_vec.x)
else:
pass`enter code here`
您需要在else语句中将图像的速度设置为0。
图像将具有残余速度,因为它在到达鼠标位置之前正在加速。将图像速度设置为 0 将使图像停止在鼠标位置,但请确保在应用加速度后执行此操作,以便取消它。
我不确定 move_and_collide(...)
的作用,但您可以尝试在 else 语句中传递它 0
?
if move_vec != look_vec:
...
else:
move_and_collide(0)
啊,这是我在使用 Unity 进行游戏开发时发生的事情。
问题是您的超调量非常小。
假设您想到达位置 0。您正在点击 0.00004 然后 -0.0524 然后 0.00242 这样的位置
基本上,您在零附近振荡,因为它永远不会完全相等。
我建议你试试这样的东西:
if move_vec - look_vec > someMinValue || move_vec - look_vec < -someMinValue
(这是绝对值比较)
基本上,如果在某个小值之内,你可以告诉游戏放松并接受它。然后您可以选择调整该值,使其正好等于所需的值:
move_vec = look_vec
您可能会想出更好的答案。这里重要的是您了解问题所在,现在可以按照您想要的方式进行更正。
我试图让精灵在 x
和 y
与鼠标相同时停止移动。
出于某种原因,一旦图像与鼠标处于相同位置,图像就会开始在同一轴上快速来回移动。我需要让它停止移动。
func _physics_process(delta):
var move_vec = Vector2()
var look_vec = get_global_mouse_position() - global_position
//this gets the mouse and sprite position
if move_vec != look_vec: // if mouse and sprite are not the same then move.
move_vec = look_vec
move_vec = move_vec.normalized()
move_and_collide(move_vec * speed * delta)
global_rotation = atan2(look_vec.y, look_vec.x)
else:
pass`enter code here`
您需要在else语句中将图像的速度设置为0。
图像将具有残余速度,因为它在到达鼠标位置之前正在加速。将图像速度设置为 0 将使图像停止在鼠标位置,但请确保在应用加速度后执行此操作,以便取消它。
我不确定 move_and_collide(...)
的作用,但您可以尝试在 else 语句中传递它 0
?
if move_vec != look_vec:
...
else:
move_and_collide(0)
啊,这是我在使用 Unity 进行游戏开发时发生的事情。
问题是您的超调量非常小。
假设您想到达位置 0。您正在点击 0.00004 然后 -0.0524 然后 0.00242 这样的位置
基本上,您在零附近振荡,因为它永远不会完全相等。
我建议你试试这样的东西:
if move_vec - look_vec > someMinValue || move_vec - look_vec < -someMinValue
(这是绝对值比较)
基本上,如果在某个小值之内,你可以告诉游戏放松并接受它。然后您可以选择调整该值,使其正好等于所需的值:
move_vec = look_vec
您可能会想出更好的答案。这里重要的是您了解问题所在,现在可以按照您想要的方式进行更正。