コード例 #1
0
ファイル: AnkyMove.cs プロジェクト: Hindi/C3P0GitHub
 /*
  * The ghost uses the Inky behaviour : when chasing Pacman, its target point is the following :
  *  - We must first establish an intermediate offset two tiles in front of Pac-Man in the direction he is moving
  *  - Now imagine drawing a vector from the center of Blanky's current tile to the center of the offset tile
  *  - Then double the vector length by extending it out just as far again beyond the offset tile.
  *  - The tile this new, extended vector points to is Anky's actual target
  * When moving, the ghost is looking a tile ahead.
  * It checks which direction is available for the next tile.
  * If only one direction is valid, it will follow it.
  * If multiples direction are available, it check which direction will make him go closer to its target.
  * Then he moves*/
 /// <summary>
 /// Updates the ankyTarget
 /// </summary>
 void chase()
 {
     if (frightenMode)
     {
         int x = (int)Random.Range(0f, 27f);
         int y = (int)Random.Range(0f, 30f);
         ankyTarget = new Vector3((float)x, 0, (float)y);
     }
     else if (scatterMode)
     {
         ankyTarget = ankyScatterTarget;
     }
     else
     {
         ankyTarget = (pacman.transform.position + 2 * pacMove.getCurDir()) + (pacman.transform.position + 2 * pacMove.getCurDir() - blanky.transform.position);
     }
     if (eaten)
     {
         ankyTarget = homeTarget;
     }
     nextDir = getNextDir();
     move();
 }
コード例 #2
0
ファイル: AnkyMove.cs プロジェクト: Hindi/C3P0GitHub
    /// <summary>
    /// Called when the scene loads
    /// </summary>
    void Start()
    {
        /*
         * The following grid represents the tile map of the level
         * [i, j] is the tile located on the ith row (from top to bottom) and jth column (from left to right).
         * For the game graphics, a tile i a 1x1 square and and its coordinates are [j, -i]
         * Each number represents a tile :
         * - 0 is a dead tile, neither the player nor the enemy AIs can be located in a dead tile at any time.
         * - 1 is a legal tile, both players and enemies can travel between those tiles
         */

        pacGrid = new int[31, 28] {
            { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
            { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
            { 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0 },
            { 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0 },
            { 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0 },
            { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
            { 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0 },
            { 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0 },
            { 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0 },
            { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
            { 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1 },
            { 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1 },
            { 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1 },
            { 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1 },
            { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1 },
            { 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1 },
            { 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1 },
            { 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1 },
            { 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1 },
            { 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
            { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
            { 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0 },
            { 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0 },
            { 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0 },
            { 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0 },
            { 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0 },
            { 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0 },
            { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 },
            { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 },
            { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
            { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
        };
        pacman       = GameObject.FindGameObjectWithTag("Player");
        blanky       = GameObject.FindGameObjectWithTag("Blanky");
        pacMove      = pacman.GetComponent <PacMove>();
        ankyTarget   = (pacman.transform.position + 2 * pacMove.getCurDir()) + (pacman.transform.position + 2 * pacMove.getCurDir() - blanky.transform.position);
        halo         = GetComponent("Halo") as Behaviour;
        curTileX     = Mathf.RoundToInt(transform.position.x);
        curTileY     = Mathf.RoundToInt(-transform.position.z);
        defaultColor = renderer.material.color;

        EventManager <bool, string> .AddListener(EnumEvent.MOVING, moving);

        EventManager <bool> .AddListener(EnumEvent.SCATTERMODE, scatter);

        EventManager <bool> .AddListener(EnumEvent.FRIGHTENED, frightened);

        EventManager <GameObject> .AddListener(EnumEvent.SENTENCE_LOST, sentenceLost);

        EventManager <GameObject> .AddListener(EnumEvent.SENTENCE_TO, sentenceTO);

        EventManager <GameObject> .AddListener(EnumEvent.SENTENCE_WIN, sentenceWin);

        EventManager.AddListener(EnumEvent.RESTARTSTATE, onRestartGame);
        EventManager <bool> .AddListener(EnumEvent.MOVING, moving);

        EventManager.AddListener(EnumEvent.MINIGAME_START, onStartMiniGame);
    }