Crafty.polygon 类
用于碰撞盒子和点击地图的多边形对象的构造函数。以一组点作为参数,交替地给出多边形顶点的x和y坐标。
对于一个n
边的多边形,应该将n
个顶点坐标对传递给构造函数。建议将顶点以顺时针的顺序传递。
构造函数接受坐标为单个数组或作为一组单独的参数。如果传递一个数组,当前的实现将在内部使用该数组—不要试图重用它。
当为一个实体创建一个多边形时,每一个点都应该被偏移或相对于实体x
和y
(不要包含绝对值,因为它会自动计算这个值)。
例子
有两种方法来创建一个带有顶点的三角形 (50, 0)
, (100, 100)
和 (0, 100)
。
new Crafty.polygon([50, 0, 100, 100, 0, 100]);
new Crafty.polygon(50, 0, 100, 100, 0, 100);
方法
Back to top
.clone()
public void .clone()
返回一个多边形的克隆。
例子
var poly = new Crafty.polygon([50, 0, 100, 100, 0, 100]);
var shiftedpoly = poly.clone().shift(5,5);
//[55, 5, 105, 5, 5, 105], but the original polygon is unchanged
Back to top
.containsPoint()
public Boolean .containsPoint(Number x, Number y)
- x
点的X位置
- y
点的Y位置
此方法用于确定一个给定的点是否包含在多边形中。
例子
var poly = new Crafty.polygon([50, 0, 100, 100, 0, 100]);
poly.containsPoint(50, 50); //TRUE
poly.containsPoint(0, 0); //FALSE
Back to top
.intersectRay()
public Number .intersectRay(Object origin, Object direction)
- origin
射线将被投射到原点的点。对象必须包含属性
_x
和_y
。
- direction
射线的方向。它必须规范化。对象必须包含属性
x
和y
。
- [Returns]
一个数字表示从射线的原点到多边形最接近的交点的距离。如果没有交点,则返回
Infinity
。
求出与这个多边形的任意部分的距离最近的交点的距离。
例子
var poly = new Crafty.polygon([0,0, 50,0, 50,50, 0,50]);
var origin = {_x: -1, _y: 25};
var direction = new Crafty.math.Vector2D(1, 0).normalize();;
var distance = poly.intersectRay(origin, direction);
Crafty.log('Distance from origin to closest intersection point', distance); // logs '1'
Back to top
.shift()
public void .shift(Number x, Number y)
- x
改变
x
轴的量
- y
改变
y
轴的量
在多边形中按指定的数量移动每一个点。
例子
var poly = new Crafty.polygon([50, 0, 100, 100, 0, 100]);
poly.shift(5,5);
//[[55, 5, 105, 5, 5, 105];