omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    Welcome!

    This is the community forum for my apps Pythonista and Editorial.

    For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.


    Collision detection and opacity

    Pythonista
    4
    4
    2584
    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.
    • Webmaster4o
      Webmaster4o last edited by

      I need to know how to use collision detection and how to give an object opacity. Could someone please post some code???
      Thx
      —Webmaster4o

      1 Reply Last reply Reply Quote 0
      • ccc
        ccc last edited by

        Look at the gists in this thread for code that does collision detection:<br />
        http://omz-forums.appspot.com/pythonista/post/4695137988902912


        Changing a scene.Layer.alpha value will change that Layer's transparency / opacity.<br />
        alpha = 0.0 means the Layer is fully transparent<br />
        alpha = 1.0 means the Layer is fully opaque

        import scene
        
        class MyScene(scene.Scene):
            def __init__(self):
                scene.run(self)
        
            def setup(self):
                center = self.bounds.center()
                self.layer = scene.Layer(scene.Rect(center.x - 64, center.y - 64, 128, 128))
                self.layer.alpha = 0  # 0.0 = fully transparent, 1.0 = fully opaque
                self.layer.background = scene.Color(1, 0, 0)
                self.layer.image = 'Snake'
                self.add_layer(self.layer)
        
            def draw(self):
                scene.background(0, 0, 0)
                self.root_layer.update(self.dt)
                self.root_layer.draw()
                self.layer.alpha += .01  # cycle the layer's alpha value
                if self.layer.alpha > 1:
                    self.layer.alpha = 0
        
        MyScene()
        

        scene.Color objects also have an alpha value that you can mess with: scene.Color(red, green, blue, alpha)

        1 Reply Last reply Reply Quote 0
        • Gerzer
          Gerzer last edited by

          If you want collision detection for Rect objects, use the Rect.intersects(other_rect) method. It returns a bool value. An example:

          from scene import *
          class MyScene(Scene):
             def draw(self):
                  fill(1, 0, 0)
                  rect(0, 0, 50, 75)
                  r1 = Rect(0, 0, 50, 75)
                  rect(0, 0, 50, 25)
                  r2 = Rect(0, 0, 50, 25)
                  if r1.intersects(r2):
                      print "R1 intersects R2"
          run(MyScene()) # Please note that this script will continuously produce output in the console, so stop the script quickly.
          

          This only works for Rect objects.
          I hope that helps!

          1 Reply Last reply Reply Quote 0
          • Sebastian
            Sebastian last edited by

            This works with circles:

            
            from scene import *
            
            def centered_ellipse(x, y, w, h):
            	ellipse(x-w/2, y-h/2, w, h)
            
            class MyScene (Scene):
            	def setup(self):
            		self.pos = Point(self.size.w/2, self.size.h/2)
            		self.pos2 = Point(0, 0)
            		
            	def draw(self):
            		background(0, 0, 0)
            		centered_ellipse(self.pos.x, self.pos.y, 100, 100)
            		centered_ellipse(self.pos2.x, self.pos2.y, 100, 100)
            		for touch in self.touches.values():
            			self.pos2 = touch.location
            			if self.pos.distance(self.pos2) < 100:
            				fill(1, 0, 0)
            			else: 
            				fill(1, 1, 1)
            				
            run(MyScene())
            
            
            1 Reply Last reply Reply Quote 0
            • First post
              Last post
            Powered by NodeBB Forums | Contributors