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); }
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); }
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); }
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; } }
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); }
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); }
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); }