Example #1
0
    private static CollisionInfo circleToSector(GeomBase geom1, GeomBase geom2)
    {
        GeomCircle circle = (GeomCircle)geom1;
        GeomSector sector = (GeomSector)geom2;
        GeomLine   line1  = sector.line1;
        GeomLine   line2  = sector.line2;

        //这个因为有需求所以就这么直接写一下了。
        bool result = !(0 != sector.inRadius && sector.center.dist(circle.center) <= sector.inRadius /* + circle.radius*/) && //不能在内圆
                      ((line1.checkPoint(circle.center) >= 0 && line2.checkPoint(circle.center) <= 0) ||                      //在夹角内
                       circleToLine(circle, line1).isHit || circleToLine(circle, line2).isHit);                               //或者与线相交

        help.isHit = result;
        return(help);
    }
Example #2
0
    public static GeomBase createGeom(FightEntity entity, object[] datas, object[] offset = null)
    {
        GeomBase result = null;

        switch (datas.Length)
        {
        case 1:
            result = new GeomCircle(entity.map);
            break;

        case 2:
            result = new GeomRect(entity.map);
            break;

        case 3:
        case 4:
            result = new GeomSector(entity.map);
            break;
        }
        result.entity = entity;
        result.parseData(datas, offset);
        return(result);
    }