Crafty.polygon

用于碰撞盒子和点击地图的多边形对象的构造函数。以一组点作为参数,交替地给出多边形顶点的x和y坐标。

对于一个n边的多边形,应该将n个顶点坐标对传递给构造函数。建议将顶点以顺时针的顺序传递。

构造函数接受坐标为单个数组或作为一组单独的参数。如果传递一个数组,当前的实现将在内部使用该数组—不要试图重用它。

当为一个实体创建一个多边形时,每一个点都应该被偏移或相对于实体xy(不要包含绝对值,因为它会自动计算这个值)。

例子

有两种方法来创建一个带有顶点的三角形 (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

射线的方向。它必须规范化。对象必须包含属性xy

[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];