示例#1
0
    /// <summary>
    /// Script entry point
    /// </summary>
    private void Start()
    {
        m_eDB           = GameObject.FindObjectOfType <EntityDatabase>();
        m_gData         = GameObject.FindObjectOfType <GlobalData>();
        m_enemyAnimator = GetComponent <Animator>();

        m_eDB.RegisterEntity(m_entityType, this.gameObject);
        m_currentMoveX = 0;
        m_currentMoveY = 0;



        if (m_entityType == m_entityTypes.TYPE_ENEMY)
        {
            int randChance = Random.Range(0, 2);

            if (m_xMoveRange != 0 && randChance == 0)
            {
                m_currentDirectionX = m_moveDirections.Left;
            }
            else if (m_xMoveRange != 0 && randChance == 1)
            {
                m_currentDirectionX = m_moveDirections.Right;
            }
            else
            {
                m_currentDirectionX = m_moveDirections.None;
            }

            if (m_yMoveRange != 0 && randChance == 0)
            {
                m_currentDirectionY = m_moveDirections.Up;
            }
            else if (m_yMoveRange != 0 && randChance == 1)
            {
                m_currentDirectionY = m_moveDirections.Down;
            }
            else
            {
                m_currentDirectionY = m_moveDirections.None;
            }
        }
        else if (m_entityType == m_entityTypes.TYPE_BOSSENEMY)
        {
            if (m_yMoveRange != 0)
            {
                m_currentDirectionY = m_moveDirections.Down;
            }
            else
            {
                m_currentDirectionY = m_moveDirections.None;
            }

            m_currentDirectionX = m_moveDirections.None;
        }


        m_canShootBullet = true;
        m_isAlive        = true;
    }
 /// <summary>
 /// Sets the direction of the bullet
 /// </summary>
 /// <param name="direction">The direction the bullet should follow</param>
 public void SetDirection(m_moveDirections direction)
 {
     if (direction == m_moveDirections.None)
     {
         m_bulletDirection = m_moveDirections.Up;
     }
     else
     {
         m_bulletDirection = direction;
     }
 }
示例#3
0
    /// <summary>
    /// Sets the looking direction
    /// </summary>
    private void SetLookDirection()
    {
        if (m_currentDirectionY == m_moveDirections.Up)
        {
            if (m_currentDirectionX == m_moveDirections.Left)
            {
                m_lookDirection = m_moveDirections.UpLeft;
            }
            else if (m_currentDirectionX == m_moveDirections.Right)
            {
                m_lookDirection = m_moveDirections.UpRight;
            }
            else
            {
                m_lookDirection = m_moveDirections.Up;
            }
        }
        else if (m_currentDirectionY == m_moveDirections.Down)
        {
            if (m_currentDirectionX == m_moveDirections.Left)
            {
                m_lookDirection = m_moveDirections.DownLeft;
            }
            else if (m_currentDirectionX == m_moveDirections.Right)
            {
                m_lookDirection = m_moveDirections.DownRight;
            }
            else
            {
                m_lookDirection = m_moveDirections.Down;
            }
        }
        else
        {
            if (m_currentDirectionX == m_moveDirections.Left)
            {
                m_lookDirection = m_moveDirections.Left;
            }
            else if (m_currentDirectionX == m_moveDirections.Right)
            {
                m_lookDirection = m_moveDirections.Right;
            }
            else if (m_currentDirectionX == m_moveDirections.None)
            {
                m_lookDirection = m_moveDirections.None;
            }
        }

        m_enemyAnimator.SetFloat("Direction", (float)m_lookDirection);
    }
示例#4
0
 /// <summary>
 /// Sets the direction variables
 /// </summary>
 private void SetDirection()
 {
     if (m_keyUp)
     {
         if (m_keyLeft)
         {
             m_pDirection = m_moveDirections.UpLeft;
         }
         else if (m_keyRight)
         {
             m_pDirection = m_moveDirections.UpRight;
         }
         else
         {
             m_pDirection = m_moveDirections.Up;
         }
     }
     else if (m_keyDown)
     {
         if (m_keyLeft)
         {
             m_pDirection = m_moveDirections.DownLeft;
         }
         else if (m_keyRight)
         {
             m_pDirection = m_moveDirections.DownRight;
         }
         else
         {
             m_pDirection = m_moveDirections.Down;
         }
     }
     else
     {
         if (m_keyLeft)
         {
             m_pDirection = m_moveDirections.Left;
         }
         else if (m_keyRight)
         {
             m_pDirection = m_moveDirections.Right;
         }
         else
         {
             m_pDirection = m_moveDirections.None;
         }
     }
     m_playerAnimator.SetFloat("Direction", (float)m_pDirection);
 }
示例#5
0
 /// <summary>
 /// Do the thing the enemy should do. Either walking or shooting
 /// </summary>
 private void DoEnemyAction()
 {
     if (GetDistanceFromPlayer() > m_attackRange)
     {
         m_enemyAnimator.speed = 1;
         WalkPath();
     }
     else if (GetDistanceFromPlayer() <= m_attackRange && m_canShootBullet == true)
     {
         m_lookDirection       = GetPlayerDirection();
         m_enemyAnimator.speed = 0;
         ShootBullet();
         m_enemyAnimator.SetFloat("Direction", (float)m_lookDirection);
     }
 }
示例#6
0
    /// <summary>
    /// Makes the enemy walk over it's predefined move range
    /// </summary>
    private void WalkPath()
    {
        m_movement = Vector2.zero;
        if (m_xMoveRange != 0)
        {
            if (m_currentDirectionX == m_moveDirections.Left)
            {
                m_movement.x   -= m_moveSpeed;
                m_currentMoveX -= m_moveSpeed;
                if (m_currentMoveX <= m_xMoveRange * -1)
                {
                    if (m_entityType == m_entityTypes.TYPE_BOSSENEMY)
                    {
                        m_currentDirectionX = m_moveDirections.None;
                    }
                    else
                    {
                        m_currentDirectionX = m_moveDirections.Right;
                    }
                }
            }
            else if (m_currentDirectionX == m_moveDirections.Right)
            {
                m_movement.x   += m_moveSpeed;
                m_currentMoveX += m_moveSpeed;
                if (m_currentMoveX >= m_xMoveRange)
                {
                    if (m_entityType == m_entityTypes.TYPE_BOSSENEMY)
                    {
                        m_currentDirectionX = m_moveDirections.None;
                    }
                    else
                    {
                        m_currentDirectionX = m_moveDirections.Left;
                    }
                }
            }
        }

        if (m_yMoveRange != 0)
        {
            if (m_currentDirectionY == m_moveDirections.Up)
            {
                m_movement.y   += m_moveSpeed;
                m_currentMoveY += m_moveSpeed;
                if (m_currentMoveY >= m_yMoveRange)
                {
                    if (m_entityType == m_entityTypes.TYPE_BOSSENEMY)
                    {
                        m_currentDirectionY = m_moveDirections.None;
                    }
                    else
                    {
                        m_currentDirectionY = m_moveDirections.Down;
                    }
                }
            }
            else if (m_currentDirectionY == m_moveDirections.Down)
            {
                m_movement.y   -= m_moveSpeed;
                m_currentMoveY -= m_moveSpeed;
                if (m_currentMoveY <= m_yMoveRange * -1)
                {
                    if (m_entityType == m_entityTypes.TYPE_BOSSENEMY)
                    {
                        m_currentDirectionY = m_moveDirections.None;
                    }
                    else
                    {
                        m_currentDirectionY = m_moveDirections.Up;
                    }
                }
            }
        }
        transform.Translate(m_movement * Time.deltaTime);
        SetLookDirection();
    }
示例#7
0
    /// <summary>
    /// Calculates the movement things
    /// </summary>
    private void DoMovement()
    {
        m_pMovement = Vector2.zero;
        Vector2 currentPosition = transform.position;

        m_keyUp    = Input.GetKey(KeyCode.W);
        m_keyDown  = Input.GetKey(KeyCode.S);
        m_keyLeft  = Input.GetKey(KeyCode.A);
        m_keyRight = Input.GetKey(KeyCode.D);

        SetDirection();

        switch (m_pDirection)
        {
        case m_moveDirections.Up: MovePlayer(new Vector2(m_pMovement.x, m_pMovement.y + m_moveSpeed));
            break;

        case m_moveDirections.Down:
            if (Camera.main.WorldToViewportPoint(transform.position).y > 0.06F)
            {
                MovePlayer(new Vector2(m_pMovement.x, m_pMovement.y - m_moveSpeed));
            }
            break;

        case m_moveDirections.Left:
            if (Camera.main.WorldToViewportPoint(transform.position).x > 0)
            {
                MovePlayer(new Vector2(m_pMovement.x - m_moveSpeed, m_pMovement.y));
            }
            break;

        case m_moveDirections.Right:
            if (Camera.main.WorldToViewportPoint(transform.position).x < 1)
            {
                MovePlayer(new Vector2(m_pMovement.x + m_moveSpeed, m_pMovement.y));
            }
            break;

        case m_moveDirections.UpRight:
            if (Camera.main.WorldToViewportPoint(transform.position).x < 1)
            {
                MovePlayer(new Vector2(m_pMovement.x + m_moveSpeed, m_pMovement.y + m_moveSpeed));
            }
            break;

        case m_moveDirections.UpLeft:
            if (Camera.main.WorldToViewportPoint(transform.position).x > 0)
            {
                MovePlayer(new Vector2(m_pMovement.x - m_moveSpeed, m_pMovement.y + m_moveSpeed));
            }
            break;

        case m_moveDirections.DownRight:
            if (Camera.main.WorldToViewportPoint(transform.position).x < 1 && Camera.main.WorldToViewportPoint(transform.position).y > 0.06F)
            {
                MovePlayer(new Vector2(m_pMovement.x + m_moveSpeed, m_pMovement.y - m_moveSpeed));
            }
            break;

        case m_moveDirections.DownLeft:
            if (Camera.main.WorldToViewportPoint(transform.position).x > 0 && Camera.main.WorldToViewportPoint(transform.position).y > 0.06F)
            {
                MovePlayer(new Vector2(m_pMovement.x - m_moveSpeed, m_pMovement.y - m_moveSpeed));
            }
            break;

        default: m_pDirection = m_moveDirections.None;
            break;
        }
        SetDirection();
    }