Esempio n. 1
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);
    }
Esempio n. 2
0
    /// <summary>
    /// 返回主角面向的确认键启动格子事件
    /// </summary>
    /// <returns></returns>
    public GameEvent getPlayerFaceToConfirmEvent()
    {
        GameEvent result = null;
        float     step   = GameTemp.gamePlayer.getStep() * 2;

        Intersection.Polygon   testPolygon = GameTemp.gamePlayer.currCollider();
        GameCharacterBase.DIRS dir         = GameTemp.gamePlayer.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.priorityType == GameCharacterBase.PRIORITIES.SAME)
                {
                    events.Add(e);
                }
            }
        }
        if (events.Count > 0)
        {
            result = events[(new System.Random()).Next(events.Count)];
        }
        return(result);
    }
Esempio n. 3
0
    /// <summary>
    /// 根据图像修改行走图配置
    /// </summary>
    /// <param name="direction">方向</param>
    /// <param name="pattern">踏步图序号</param>
    /// <param name="isNew">是否是新图案</param>
    private void changeBitmap(GameCharacterBase.DIRS direction, int pattern, bool isNew = false)
    {
        SpriteRenderer sr = this.transform.GetComponent <SpriteRenderer>();

        if (isNew)
        {
            string path = string.Format("graphics/character/{0}", this.character.characterName);
            this.sprites = Resources.LoadAll <Sprite>(path);
        }
        int index = ((int)direction / 2 - 1) * 3 + (pattern % 3);

        if ("".Equals(this.character.characterName))
        {
            sr.sprite = null;
        }
        else
        {
            sr.sprite = this.sprites[index];
        }
    }