Difference between revisions of "Bounds"

From MiniScript Wiki
Jump to navigation Jump to search
(Created page with "In Mini Micro, the Bounds class represents a rectangular bounding box. It is used for hit-testing and collision detection, especially with Sprites. {{stub}}")
 
Line 1: Line 1:
In [[Mini Micro]], the Bounds class represents a rectangular bounding box.  It is used for hit-testing and collision detection, especially with [[Sprite|Sprites]].
+
<c>Bounds</c> is a built-in class in the [[Mini Micro]] API.  It represents a rectangular bounding box, which can be tested for overlap with other bounding boxes, or for containing a pointThis is often used for collision-checking and hit-testing with [[Sprite|Sprites]].
  
{{stub}}
+
=== Methods and properties used with Bounds objects ===
 +
 
 +
Use these methods on Sprite instances, created with <c>[[new]] Bounds</c>.
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Method or Property !! Purpose
 +
|-
 +
| [[Bounds.x]] || horizontal position of the bounds
 +
|-
 +
| [[Bounds.y]] || vertical position of the bounds
 +
|-
 +
| [[Bounds.width]] || bounding box width
 +
|-
 +
| [[Bounds.height]] || bounding box height
 +
|-
 +
| [[Bounds.rotation]] || bounding box rotation (degrees counter-clockwise)
 +
|-
 +
| [[Bounds.corners]] || returns bounding box corners as a list of <c>[x,y]</c> pairs
 +
|-
 +
| [[Bounds.overlaps]](''b'') || return whether this bounds overlaps bounds ''b''
 +
|-
 +
| [[Bounds.contains]](''x'', ''y'') || return whether the bounds contains the given point
 +
|-
 +
|}
 +
 
 +
=== Usage Notes ===
 +
 
 +
The [[Bounds.contains|contains]] method may be given ''x'' and ''y'' as two separate arguments; or it may be given an <c>[x, y]</c> list; or it may be given any map containing "x" and "y" keys (such as [[mouse]]).
 +
 
 +
== Example ==
 +
 
 +
The following example defines a Bounds at the center of the screen, and then enters a loop which draws the bounds yellow when the mouse is over it, and gray when it is not.
 +
 
 +
<ms>b = new Bounds
 +
b.x = 480
 +
b.y = 320
 +
b.width = 200
 +
b.height = 100
 +
b.rotation = 45
 +
while true
 +
if b.contains(mouse) then
 +
gfx.drawPoly b.corners, color.yellow
 +
else
 +
gfx.drawPoly b.corners, color.gray
 +
end if
 +
yield
 +
end while</ms>
 +
 
 +
 
 +
See also: [[How to detect a click on a sprite]]
 +
 
 +
[[Category: Mini Micro]]

Revision as of 15:06, 7 February 2021

Bounds is a built-in class in the Mini Micro API. It represents a rectangular bounding box, which can be tested for overlap with other bounding boxes, or for containing a point. This is often used for collision-checking and hit-testing with Sprites.

Methods and properties used with Bounds objects

Use these methods on Sprite instances, created with new Bounds.

Method or Property Purpose
Bounds.x horizontal position of the bounds
Bounds.y vertical position of the bounds
Bounds.width bounding box width
Bounds.height bounding box height
Bounds.rotation bounding box rotation (degrees counter-clockwise)
Bounds.corners returns bounding box corners as a list of [x,y] pairs
Bounds.overlaps(b) return whether this bounds overlaps bounds b
Bounds.contains(x, y) return whether the bounds contains the given point

Usage Notes

The contains method may be given x and y as two separate arguments; or it may be given an [x, y] list; or it may be given any map containing "x" and "y" keys (such as mouse).

Example

The following example defines a Bounds at the center of the screen, and then enters a loop which draws the bounds yellow when the mouse is over it, and gray when it is not.

b = new Bounds
b.x = 480
b.y = 320
b.width = 200
b.height = 100
b.rotation = 45
while true
	if b.contains(mouse) then
		gfx.drawPoly b.corners, color.yellow
	else
		gfx.drawPoly b.corners, color.gray
	end if
	yield
end while


See also: How to detect a click on a sprite