示例#1
0
    private bool _isOnLeftEdge()
    {
        Vector2 castOrigin = m_SpeedManager.GetTruePos();

        castOrigin.x -= (m_SpeedManager.BodyWidth / 2f + 0.2f);
        castOrigin.y -= m_SpeedManager.BodyHeight / 2f;
        RaycastHit2D hit = Physics2D.BoxCast(castOrigin, new Vector2(0.1f, 0.1f), 0f, Vector2.zero);

        return(hit.collider == null && m_SpeedManager.HitGround);
    }
示例#2
0
 private bool _isPlayerInSight()
 {
     if (Vector2.Distance(m_SpeedManager.GetTruePos(), m_PlayerSpeedManager.GetTruePos()) < Distance.Value &&
         Vector3.Angle((m_PlayerSpeedManager.GetTruePos() - m_SpeedManager.GetTruePos()).normalized, Owner.transform.right) < HalfAngle.Value &&
         !Physics2D.Linecast(m_SpeedManager.GetTruePos(), m_PlayerSpeedManager.GetTruePos(), ObstacleLayer.Value))
     {
         return(true);
     }
     return(false);
 }
    public override TaskStatus OnUpdate()
    {
        float playerPosX = m_PlayerSpeedManager.GetTruePos().x;
        float playerPosY = m_PlayerSpeedManager.GetTruePos().y;

        if (_isPlayerInSight())
        {
            return(TaskStatus.Success);
        }
        return(TaskStatus.Failure);
    }
    public override TaskStatus OnUpdate()
    {
        bool MovingRight = m_SpeedManager.GetTruePos().x < Target.Value.transform.position.x;

        if (MovingRight)
        {
            transform.eulerAngles = Vector3.zero;
        }
        else
        {
            transform.eulerAngles = new Vector3(0f, 180f, 0f);
        }

        m_SpeedManager.SelfSpeed.x = (MovingRight ? 1f : -1f) * Speed.Value;
        if (Mathf.Abs(AIUtility.GetXDiff(Target.Value, Owner.gameObject)) <= ArrivalDistance.Value)
        {
            m_SpeedManager.SelfSpeed.x = 0f;
        }

        if (m_Timer < Time.timeSinceLevelLoad)
        {
            return(TaskStatus.Success);
        }

        return(TaskStatus.Running);
    }
示例#5
0
    private bool m_PlayerInFront()
    {
        Vector2 origin = m_SpeedManager.GetTruePos();

        origin.x += (Owner.transform.right.x * m_BoxCollider2D.bounds.extents.x);
        return(Physics2D.BoxCast(origin, m_BoxCollider2D.size, 0f, Owner.transform.right, DetectionRange.Value, PlayerLayer));
    }
 public override TaskStatus OnUpdate()
 {
     if (Vector2.Distance(m_PlayerSpeedManager.GetTruePos(), m_SpeedManager.GetTruePos()) < Range.Value)
     {
         return(TaskStatus.Success);
     }
     return(TaskStatus.Failure);
 }
示例#7
0
 public override void OnStart()
 {
     m_Timer = Time.timeSinceLevelLoad + BackStepDuration.Value;
     m_SpeedManager.SelfSpeed.y = BackStepSpeed.Value.y;
     if (Physics2D.Raycast(m_SpeedManager.GetTruePos(), -Owner.transform.right, BackStepDuration.Value * BackStepSpeed.Value.x, WallLayer.Value))
     {
         m_Direction = -1;
     }
 }
示例#8
0
    public override void OnStart()
    {
        float xOffset   = m_Player.transform.position.x - m_SpeedManager.GetTruePos().x;
        float xVelocity = xOffset / FlyTime.Value;

        float yVelocity = m_GravityManager.Gravity * 10f * FlyTime.Value / 2f;

        m_SpeedManager.SelfSpeed.x = xVelocity;
        m_SpeedManager.SelfSpeed.y = yVelocity;
    }
    public override TaskStatus OnUpdate()
    {
        bool MovingRight = m_SpeedManager.GetTruePos().x < Target.Value.transform.position.x;

        if (MovingRight)
        {
            transform.eulerAngles = Vector3.zero;
        }
        else
        {
            transform.eulerAngles = new Vector3(0f, 180f, 0f);
        }

        m_SpeedManager.SelfSpeed.x = (MovingRight ? 1f : -1f) * Speed.Value;
        if (Vector2.Distance(Target.Value.transform.position, m_SpeedManager.GetTruePos()) <= ArrivalDistance.Value)
        {
            m_SpeedManager.SelfSpeed.x = 0f;
            return(TaskStatus.Success);
        }

        return(TaskStatus.Running);
    }
示例#10
0
 public override TaskStatus OnUpdate()
 {
     if (m_Timer < Time.timeSinceLevelLoad)
     {
         return(TaskStatus.Success);
     }
     if (m_SpeedManager.GetTruePos().x > m_PlayerSpeedManager.GetTruePos().x)
     {
         Owner.transform.eulerAngles = new Vector3(0f, 180f, 0f);
     }
     else
     {
         Owner.transform.eulerAngles = new Vector3(0f, 0f, 0f);
     }
     return(TaskStatus.Running);
 }
示例#11
0
    public override TaskStatus OnUpdate()
    {
        GameObject orb = GameObject.Instantiate(Resources.Load("Prefabs/Orb") as GameObject, m_SpeedManager.GetTruePos() + Offset.Value, Quaternion.identity, Owner.transform);

        orb.GetComponent <SpriteRenderer>().color = OrbColor.Value;
        GameObject.Destroy(orb, UpTime.Value);
        return(TaskStatus.Success);
    }