Ejemplo n.º 1
0
 /// <summary>
 /// 是否和人物碰撞
 /// </summary>
 /// <returns><c>true</c>, if hitting char was ised, <c>false</c> otherwise.</returns>
 /// <param name="character">Character.</param>
 public virtual bool isHittingChar(GameCharacterBase character)
 {
     Intersection.Polygon eventCollider = character.currCollider();
     if (Intersection.polygonPolygon(eventCollider, this.currCollider()))
     {
         return(true);
     }
     return(false);
 }
Ejemplo n.º 2
0
    /// <summary>
    /// 返回面向的格子事件ID
    /// </summary>
    /// <returns></returns>
    public int getFaceToEventId(GameCharacterBase character)
    {
        GameEvent result = null;
        float     step   = GameTemp.gamePlayer.getStep() * 2;

        Intersection.Polygon   testPolygon = character.currCollider();
        GameCharacterBase.DIRS dir         = character.direction;
        if (dir == GameCharacterBase.DIRS.DOWN)
        {
            testPolygon = Intersection.polygonMove(testPolygon, 0, -step);
        }
        if (dir == GameCharacterBase.DIRS.LEFT)
        {
            testPolygon = Intersection.polygonMove(testPolygon, -step, 0);
        }
        if (dir == GameCharacterBase.DIRS.RIGHT)
        {
            testPolygon = Intersection.polygonMove(testPolygon, step, 0);
        }
        if (dir == GameCharacterBase.DIRS.UP)
        {
            testPolygon = Intersection.polygonMove(testPolygon, 0, step);
        }
        List <GameEvent> events = new List <GameEvent>();

        foreach (GameEvent e in this.events)
        {
            Intersection.Polygon eventCollider = e.currCollider();
            if (Intersection.polygonPolygon(eventCollider, testPolygon))
            {
                if (!e.erased && !e.Equals(character))
                {
                    events.Add(e);
                }
            }
        }
        if (events.Count > 0)
        {
            result = events[(new System.Random()).Next(events.Count)];
            return(result.eventId);
        }
        return(0);
    }