Sprites - Help!
-
Sure thing! First, you'll need to create an empty map using the map editor. Then in your code you'll need to load it with
loadMap(map_name)
and callcollideMap(my_sprite)
to refresh the collision data.Here's how I would update the swimmer collision example earlier in this thread to work around the problem:
map = loadMap("test") // Load an empty map created with the map editor. img = loadImage("Untied Games/Swimmer A") spr1 = createSprite() setSpriteImage(spr1, img) setSpriteAnimation(spr1, 14, 27, 10) setSpriteCollisionShape(spr1, SHAPE_CIRCLE, 100, 100, 0) spr1.x = 1920 / 4 spr1.x_speed = -100 spr2 = createSprite() setSpriteImage(spr2, img) setSpriteAnimation(spr2, 14, 27, 10) setSpriteCollisionShape(spr2, SHAPE_CIRCLE, 100, 100, 0) spr2.x = -1920 / 4 spr2.x_speed = 100 spr2.xscale = -1 setSpriteCamera(0, 0, 4) centerSpriteCamera(0, 0) while true loop clear(0, 0, 0, 0) // Colliding these sprites with an empty map will not affect them, but it will properly refresh their collision data. collideMap(spr1) collideMap(spr2) result = collideSprites(spr1, spr2) if result.exists then spr2.visible = false endif updateSprites() drawSprites() update() repeat
-
Ah i was only calling collideMap once and not in my game loop. This helped, thank you!
-
Nice, glad you got it working! When I have an ETA on when the fix for this issue can be deployed, I'll let everyone know.
-
I have a question about sprite animation.
I have a sprite that is animating through frames correctly when idling.
When I detect control input say c.right I set the sprite animation to the corresponding right direction frames. And set the location. The sprite is moving to the right but no longer animates until I stop pressing c.right. I assume each time I update the sprite location it's resetting the animation to it's first frame.
I've looked at example code and can't spot what I am doing wrong.
-
@sys64738 the resetting of the animation is more likely from assigning the frame when detecting the key press.
-
@Discostew yeah that's it. Trying to figure out best way to stop it retriggering. Guess a Boolean switch will do for now
-
@Martin == vs = is the oldest trap in the book! Some compilers now warn you about this one
-
I don’t know why my brain just assumes because it’s basic, it’s should be a single = and somehow magically know the difference!
-
Was this ever resolved. Just got collisions working in my latest project and then turned off show collision boxes. And well here I am with same problem as Martin.
Edit have loaded an empty map as above. And added
for x = 0 to 10 loop collidemap(bubblesprite[x]) Collide = detectspritecollision(subsprite,bubblesprite[x])
And it works very occasionly for a bit then doesn't
-
I am told that it is resolved in the next patch that has been submitted for review.
It works 100% of the time for me when using what you have done. I do also collide subsprite with the map as well however. Maybe try that?
-
@Martin oh brilliant that was the problem, I didn't collidemap the sub, so obvious in hindsight! thank you!