public override void Behaviour(float fElapsedTime, DynamicGameObject player = null) { if (Health <= 0) { vx = 0; vy = 0; SolidVsDynamic = false; IsAttackable = false; // Patrol = Enum.Actions.Left; return; } if (player != null) { Ticker++; StateTick -= fElapsedTime; if (StateTick <= 0.0f) // för att inte göra beslut så ofta. { StateTick += 1.0f; } //if (!IsAttackable) //{ // Ticker = 0; //} // //if (State == Enum.LastStage.StayUp && Ticker < 120) //{ // State = Enum.LastStage.MovingDown; //} //else if (State == Enum.LastStage.MovingDown && Ticker > 120) //{ // State = Enum.LastStage.StayDown; //} //else if (State == Enum.LastStage.StayDown && Ticker > 150) //{ // State = Enum.LastStage.MovingUp; //} //else if (State == Enum.LastStage.MovingUp && Ticker > 270) //{ // State = Enum.LastStage.StayUp; //} //else if (Ticker >= 300) //{ // Ticker = 0; //} if (Ticker < 60) { State = Enum.LastStage.MovingDown; } else if (Ticker < 120) { State = Enum.LastStage.MovingUp; if (Ticker < 118) { TurnedTo = Enum.PlayerOrientation.Left; } } else if (Ticker < 160) { TurnedTo = Enum.PlayerOrientation.Right; } else if (Ticker >= 180) { Ticker = 0; } // if (py < 12 || py > 13) { if (py < 12) { py = 12; } if (py > 13) { py = 13; } } if (State == Enum.LastStage.MovingDown) { if (vy <= 0) { } vy = 2; //if (py != 13) //{ // //py = py + 0.20f; // py = 13; //} } else if (State == Enum.LastStage.MovingUp) { if (vy >= 0) { } vy = -2; } vx = 0; if (py <= FromCor) { vy = 0; py = 12; } if (py >= ToCor) { vy = 0; py = 13; } //reset IsAttackable if (!IsAttackable && py == 13) { IsAttackable = true; } // Switch X if (py == 13.0f) { Core.Aggregate.Instance.IsUnderGround = true; Core.Aggregate.Instance.IsMoving = false; } else if (py == 12.0f) { Core.Aggregate.Instance.IsAboveGround = true; Core.Aggregate.Instance.IsMoving = false; } else { Core.Aggregate.Instance.IsMoving = true; Core.Aggregate.Instance.IsUnderGround = false; Core.Aggregate.Instance.IsAboveGround = false; } //if (State == Enum.LastStage.StayUp) //{ // py = 12.0f; //} //else if (State == Enum.LastStage.MovingUp) //{ // if (py > 12.0f) // { // py = py - 0.025f; // } // else // { // py = 12.0f; // } //} //else if (State == Enum.LastStage.StayDown) //{ // py = 13.0f; //} //else if (State == Enum.LastStage.MovingDown) //{ // if (py < 13.0f) // { // py = py + 0.025f; // } // else // { // py = 13.0f; // } //} } }
public override void Behaviour(float fElapsedTime, DynamicGameObject player = null) { if (Health <= 0) { vx = 0; vy = 0; SolidVsDynamic = false; IsAttackable = false; return; } //Temp, för test i demo endast. Byt ut när boss är bra först if (player != null) { Ticker++; StateTick -= fElapsedTime; if (StateTick <= 0.0f) // för att inte göra beslut så ofta. { StateTick += 1.0f; } if (Ticker < 60) { State = Enum.LastStage.MovingDown; } else if (Ticker < 120) { State = Enum.LastStage.MovingUp; } else if (Ticker >= 180) { Ticker = 0; } if (py < 12 || py > 13) { if (py < 12) { py = 12; } if (py > 13) { py = 13; } } if (State == Enum.LastStage.MovingDown) { if (vy <= 0) { } vy = 2; //if (py != 13) //{ // py = 13; //} } else if (State == Enum.LastStage.MovingUp) { if (vy >= 0) { } vy = -2; } vx = 0; if (py <= FromCor) { vy = 0; py = 12; } if (py >= ToCor) { vy = 0; py = 13; } } //end temp }