How to move a sprite towards a target

From MiniScript Wiki
Jump to navigation Jump to search

To move a sprite at a constant speed towards a target, find the difference in X and Y, and normalize by multiplying by the desired speed divided by the total distance. Then simply add the normalized differences to the sprite position.

See also How to point a sprite at a target.

Example

This example moves a sprite continuously towards the mouse.

clear
sp = new Sprite
sp.image = file.loadImage("/sys/pics/Wumpus.png")
sp.x = 480
sp.y = 320
display(4).sprites.push sp
speed = 10 // (pixels per frame)

while true // (press Control-C to exit)
	dx = mouse.x - sp.x
	dy = mouse.y - sp.y
	dist = sqrt(dx*dx + dy*dy)
	if dist < speed then dist = speed
	sp.x = sp.x + dx * speed/dist
	sp.y = sp.y + dy * speed/dist
	yield
end while