Пример #1
0
    public void setRotare()
    {
        int rotTime = (int)defDirection + (int)parent.transform.eulerAngles.z / 90;

        if (rotTime >= 4)
        {
            rotTime = rotTime - 4;
        }

        direction = (RailDirectionEnum)rotTime;

        switch (direction)
        {
        case (RailDirectionEnum.Up):
            vecDirection = Vector3.up;
            break;

        case (RailDirectionEnum.Down):
            vecDirection = -Vector3.up;
            break;

        case (RailDirectionEnum.Right):
            vecDirection = Vector3.right;
            break;

        case (RailDirectionEnum.Left):
            vecDirection = -Vector3.right;
            break;
        }
    }
Пример #2
0
 RailDirection findInverseDirInNeighboringBlock(RailBlock block, RailDirectionEnum direction)
 {
     for (int i = 0; i < block.directions.Length; i++)
     {
         int temp = (int)block.directions[i].direction + 2;
         if (temp >= 4)
         {
             temp = temp - 4;
         }
         if (direction == (RailDirectionEnum)temp)
         {
             return(block.directions [i]);
         }
     }
     return(null);
 }
Пример #3
0
    void findNewDirection()
    {
        int randomDir = 0;

        if (nextBlock.directions.Length == 1 || avaibleDir.Count == 1)
        {
            randomDir = 0;
        }
        else
        {
            randomDir = Random.Range(0, avaibleDir.Count);
        }
        nextBlock         = avaibleDir [randomDir].NeighborBlock;
        currentDirections = avaibleDir [randomDir].direction;
        target            = avaibleDir [randomDir].NeighborBlock.transform;
        sawBlock.rotation = Quaternion.Euler(0, 0, 90 * avaibleDir[randomDir].VecDirection.y);
        canMove           = true;
    }
Пример #4
0
    void findAvaibleDir()
    {
        canMove    = false;
        avaibleDir = new List <RailDirection> ();
        RailDirectionEnum inverseDir = findInverseDir();

        if (nextBlock.directions.Length != 1)
        {
            for (int i = 0; i < nextBlock.directions.Length; i++)
            {
                if (nextBlock.directions [i].direction != inverseDir && nextBlock.directions [i].NeighborBlock != null)
                {
                    avaibleDir.Add(nextBlock.directions [i]);
                }
            }
            if (avaibleDir.Count == 0)
            {
                Invoke("findAvaibleDir", 0.5f);
            }
            else
            {
                findNewDirection();
            }
        }
        else
        {
            if (nextBlock.directions [0].NeighborBlock != null)
            {
                avaibleDir.Add(nextBlock.directions [0]);
                findNewDirection();
            }
            else
            {
                Invoke("findAvaibleDir", 0.5f);
            }
        }
    }
Пример #5
0
 public void SetDef(RailBlock block)
 {
     defDirection = direction;
     parent       = block;
 }
Пример #6
0
 public void GetStartData(RailBlock block, RailDirectionEnum firstDir)
 {
     nextBlock         = block;
     target            = block.transform;
     currentDirections = firstDir;
 }