Navigation

    Fuze Arena Logo
    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Users
    • Groups
    • Help
    • Discord

    Some questions about collideSprites...

    Beginners
    8
    37
    1714
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • vinicity
      vinicity F last edited by

      So I made a few changes and optimizations, and cleaned up the code. Fifty bouncing ships makes for a nice screensaver...

      1 Reply Last reply Reply Quote 0
      • vinicity
        vinicity F last edited by

        I just shared a new version of my 50 bouncing ships demo. Cleaned up the code, added some optimizations to make it run smoother. Also made sure that ships that disappears at one edge are moved over to the other.

        ID: NBYUXMND5C

        1 Reply Last reply Reply Quote 1
        • vinicity
          vinicity F last edited by

          After some tweaking and with a proximity check in place, I managed to get 92 ships bouncing around without dropping from 60 fps! Success!

          1 Reply Last reply Reply Quote 4
          • Dave
            Dave Fuze Team last edited by

            Awesome job @vinicity !

            I'm glad to hear the info was helpful. Looking forward to seeing what you make in the future!

            1 Reply Last reply Reply Quote 0
            • vinicity
              vinicity F last edited by

              Thanks! I am actually turning this into a game. I'll keep you posted once I got something new to show...

              1 Reply Last reply Reply Quote 1
              • vinicity
                vinicity F @Dave last edited by

                @Dave said in Some questions about collideSprites...:

                You've actually caught Fuze at a bad time with that particular function page. There are errors on that page which really hurt.

                I'll post here what is going to be included in an upcoming update to the help. This is what collideSprites() does:

                collideSprites()

                Description
                Determine if two sprites have collided and optionally resolve the effect of the collision on their movement

                Syntax

                c = collideSprites( spriteA, spriteB )
                
                c = collideSprites( spriteA, spriteB, resolve1, resolve2 )
                

                Arguments

                spriteA
                Handle - Variable which stores the first sprite in the collision

                spriteB
                Handle - Variable which stores the second sprite in the collision

                resolve1
                Integer - True (1) if the first sprite can be moved by the collision, false (0) if not

                resolve2
                Integer - True (1) if the second sprite can be moved by the collision, false (0) if not

                c
                Array - List of structures detailing collision data. Properties listed below

                c.exists
                Integer - True (1) if collision occurred, false (0) if not

                c.a
                Handle - Variable which stores the first sprite in the collision

                c.b
                Handle - Variable which stores the second sprite in the collision

                c.resolution_a
                Vector - How sprite A was pushed during the collision { x, y }

                c.resolution_b
                Vector - How sprite B was pushed during the collision { x, y }

                It would be nice if the collideSprites() help page could be updated with the info above, since the info that is there now is not really helpful. I know you guys are super busy, but this is just a friendly reminder so you do not forget it!

                waldron 1 Reply Last reply Reply Quote 0
                • waldron
                  waldron F @vinicity last edited by

                  @vinicity i only figured the sprite collision thing last week, before i was just using true/false didn't know you could link events triggers ect been a big 1 -UP for my code since

                  vinicity 1 Reply Last reply Reply Quote 0
                  • vinicity
                    vinicity F @waldron last edited by

                    @waldron said in Some questions about collideSprites...:

                    @vinicity i only figured the sprite collision thing last week, before i was just using true/false didn't know you could link events triggers ect been a big 1 -UP for my code since

                    Link events triggers? That sounds interesting. Care to elaborate a bit?

                    waldron 1 Reply Last reply Reply Quote 0
                    • waldron
                      waldron F @vinicity last edited by waldron

                      @vinicity
                      collide1 = collidesprites(sprite.plr,sprite.boss)
                      collide2 = collidesprites(sprite.plr,sprite.door)
                      if collide1 or collide2 then
                      (stuff happens)
                      endif

                      you can also add in stuff like boss health and have triggers on his/her health level. then you got else statements ect.

                      i only figured this after playing Steve's Row ya boat :) cheers Steve

                      i can add to this later

                      vinicity 1 Reply Last reply Reply Quote 1
                      • waldron
                        waldron F last edited by

                        in Fact il cover it in my next video tutorial, iv sorted the quality in my last test so youl be able to actually see the code :) il cover sprite collisions and triggers wrapped in a simple boss fight program. il aim for next week to make and release it

                        1 Reply Last reply Reply Quote 1
                        • vinicity
                          vinicity F @waldron last edited by

                          @waldron said in Some questions about collideSprites...:

                          @vinicity
                          collide1 = collidesprites(sprite.plr,sprite.boss)
                          collide2 = collidesprites(sprite.plr,sprite.boss)
                          if collide1 or collide2 then
                          (stuff happens)
                          endif

                          you can also add in stuff like boss health and have triggers on his/her health level. then you got else statements ect.

                          i only figured this after playing Steve's Row ya boat :) cheers Steve

                          But how does that even work? collide1 and collide2 are not booleans (or actually integers; I know Fuze does not have proper bools), but structs? How can you test a struct in an if clause just like that?

                          I would have thought you would need something like:

                          collide1 = collidesprites(sprite.plr,sprite.boss)
                          collide2 = collidesprites(sprite.plr,sprite.boss)
                          if collide1.exists or collide2.exists then
                          (stuff happens)
                          endif

                          waldron 1 Reply Last reply Reply Quote 0
                          • waldron
                            waldron F @vinicity last edited by

                            @vinicity sorry the second collision is supposed to be sprite. plr , sprite.door)

                            1 Reply Last reply Reply Quote 0
                            • waldron
                              waldron F last edited by waldron

                              then if collide1 then//it already reads the collision between sprites because of the collidesprites function, the collide1 is just calling it

                              im guessing if you don't call if it exists then its at its default ??
                              il have to check when im home but works

                              1 Reply Last reply Reply Quote 0
                              • vinicity
                                vinicity F last edited by

                                Are you saying that once you have called collideSprites() once, you can then test the resulting struct multiple times, and that it will update depending on whether the collision has occurred or not? So the collideSprites() call does need to be inside the game loop?

                                I must test this tonight, but I think it sounds a bit strange...

                                waldron 1 Reply Last reply Reply Quote 0
                                • waldron
                                  waldron F @vinicity last edited by

                                  @vinicity i have it in my main loop yes, il double check also when home but works. i use it to collect sprites move sprites all sorts

                                  1 Reply Last reply Reply Quote 0
                                  • pianofire
                                    pianofire Fuze Team last edited by

                                    I am also confused by this collidesprites returns a struct. If I treat it as a condition (bool) it seems to always be true. Interestingly if I try to negate it using ! I get an error. Are you sure that this works?

                                    waldron 1 Reply Last reply Reply Quote 0
                                    • waldron
                                      waldron F @pianofire last edited by waldron

                                      @pianofire ok so i shouldn't write code without seeing it, i have
                                      for i = 0 to len(sprite) loop
                                      collide1 = detectspritecollision (sprite,coins[i])
                                      if collide1 then
                                      (stuff)
                                      endif
                                      repeat

                                      1 Reply Last reply Reply Quote 1
                                      • Retrocade_media
                                        Retrocade_media F last edited by

                                        For checking if it's true I always just use detectspritecollision(spr1,spr2). All it returns is a true or false statement

                                        1 Reply Last reply Reply Quote 0
                                        • waldron
                                          waldron F last edited by

                                          i missed that part detect....

                                          1 Reply Last reply Reply Quote 1
                                          • vinicity
                                            vinicity F last edited by

                                            That explains it!

                                            1 Reply Last reply Reply Quote 2
                                            • First post
                                              Last post