예제 #1
0
 // Update is called once per frame
 internal virtual void Update()
 {
     if (myTile && !myTile.IsVisible())
     {
         animationSpeed = unseenMovementSpeed;
     }
     else
     {
         animationSpeed = normalMovementSpeed;
     }
     HandleMovement();
     HandleVisibility();
 }
    internal override void Proc(DungeonTile targetTile)
    {
        AudioSource.PlayClipAtPoint(teleportSound, FindObjectOfType <Camera>().transform.position, PlayerPrefs.GetFloat(Options.sfxVolumeKey));
        if (!targetTile.isOccupied)
        {
            if (targetTile.IsVisible() && ((!targetTile.isBlocked) || Program.selectedProgram.IsFlying()))
            {
                Instantiate(teleportEffect, Program.selectedProgram.transform.position, Quaternion.identity);
                Instantiate(teleportEffect, targetTile.GetOccupyingCoordinates(Program.selectedProgram.IsFlying(), false), Quaternion.identity);

                Program.selectedProgram.myTile.Vacate(Program.selectedProgram);
                Program.selectedProgram.myTile = targetTile;
                targetTile.Occupy(Program.selectedProgram);
                Program.selectedProgram.gameObject.transform.position = targetTile.GetOccupyingCoordinates(Program.selectedProgram.IsFlying(), false);

                EndProc();
            }
        }
    }