Exemplo n.º 1
0
 void Start()
 {
     brotherScript = brotherObject.GetComponent <FairySpot>();
     canBounce     = false;
     InitTransformable();
     isPunchable          = false;
     isBreakable          = false;
     interactuableBySmash = false;
     offset = GameLogic.instance.worldOffset;
 }
Exemplo n.º 2
0
    void FairyBehaviour()
    {
        if (targetIndex < fairySpotList.Count)
        {
            if (currentSpot == null)
            {
                fairyModel.transform.localPosition = new Vector3(0, 0, 0);
                idleTimer = 0;
                FadeOut();

                if (GameLogic.instance.currentPlayer.interactableObject == this)
                {
                    GameLogic.instance.currentPlayer.interactableObject = null;
                    GameLogic.instance.eventState = GameLogic.EventState.NONE;
                    PauseCanvas.textIndex         = -1;
                    PauseCanvas.lastIndex         = -1;
                }

                if (Vector2.Distance(transform.position, fairySpotList[targetIndex].transform.position) < 1.0f)
                {
                    currentSpot = fairySpotList[targetIndex];

                    brotherScript.currentSpot = fairySpotList[targetIndex].brotherScript;



                    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //if (spriteRendererObject != null) {
                    //    if (currentSpot.messageSprite != null) {
                    //        //spriteRendererObject.SetActive(false);
                    //        FadeOut();
                    //        spriteRenderer.sprite = currentSpot.messageSprite;
                    //        brotherScript.spriteRenderer.sprite = currentSpot.brotherScript.messageSprite;
                    //    } else {
                    //        spriteRenderer.sprite = null;
                    //        brotherScript.spriteRenderer.sprite = null;
                    //    }
                    //}
                    //rb.velocity = new Vector2(0, 0);
                }
                else
                {
                    Vector2 DesiredVelocity = fairySpotList[targetIndex].transform.position - transform.position;
                    DesiredVelocity.Normalize();
                    DesiredVelocity *= max_Speed;
                    Vector2 SteeringForce = (DesiredVelocity - rb.velocity);
                    SteeringForce /= max_Speed;
                    Vector2 acceleration = SteeringForce * 2;
                    rb.velocity += acceleration * Time.deltaTime;


                    //rb.velocity.Normalize();

                    //rb.velocity *= max_Speed;


                    //rb.velocity = rb.velocity * max_Speed;
                }
            }
            else
            {
                if (!currentSpot.mustStopHere)
                {
                    if (targetIndex + 1 != fairySpotList.Count)
                    {
                        setIdle = false;
                        brotherScript.setIdle = false;
                        targetIndex++;
                        brotherScript.targetIndex++;
                        currentSpot = null;
                        brotherScript.currentSpot = null;
                        FadeOut();

                        brotherScript.FadeOut();
                    }
                    //spriteRendererObject.SetActive(false);

                    if (GameLogic.instance.currentPlayer.interactableObject == this)
                    {
                        GameLogic.instance.currentPlayer.interactableObject = null;
                        GameLogic.instance.eventState = GameLogic.EventState.NONE;
                        PauseCanvas.textIndex         = -1;
                        PauseCanvas.lastIndex         = -1;
                    }
                }
                else
                {
                    if (!setIdle)
                    {
                        setIdle                          = true;
                        currentIdlePattern               = Random.Range(0, 6);
                        brotherScript.setIdle            = true;
                        brotherScript.currentIdlePattern = currentIdlePattern;

                        //Debug.Log(currentIdlePattern);
                    }
                    rb.velocity = new Vector2(0, 0);

                    //////IDLE
                    float idleX = 0, idleY = 0;


                    switch (currentIdlePattern)
                    {
                        #region switchIdle
                    case 0:
                        idleTimer += Time.deltaTime;
                        idleX      = Mathf.Cos(4 * idleTimer) - Mathf.Pow(Mathf.Cos(1 * idleTimer), 3);
                        idleY      = Mathf.Sin(4 * idleTimer) - Mathf.Pow(Mathf.Sin(1 * idleTimer), 3);

                        fairyModel.transform.Translate(new Vector2(idleX * Time.deltaTime, idleY * Time.deltaTime));

                        break;

                    case 1:
                        idleTimer += Time.deltaTime * 2;


                        idleX = Mathf.Sin(-90 + idleTimer) * 1;
                        idleY = Mathf.Cos(90 + idleTimer) * 1;

                        fairyModel.transform.Translate(new Vector2(idleX * Time.deltaTime, idleY * Time.deltaTime));
                        break;

                    case 2:
                        idleTimer += Time.deltaTime;
                        idleX      = Mathf.Cos(1 * idleTimer) - Mathf.Pow(Mathf.Cos(5 * idleTimer), 3);
                        idleY      = Mathf.Sin(1 * idleTimer) - Mathf.Pow(Mathf.Sin(5 * idleTimer), 3);

                        fairyModel.transform.Translate(new Vector2(idleX * Time.deltaTime, idleY * Time.deltaTime));

                        break;

                    case 3:
                        idleTimer += Time.deltaTime;
                        idleX      = Mathf.Cos(1 * idleTimer) - Mathf.Pow(Mathf.Cos(3 * idleTimer), 3);
                        idleY      = Mathf.Sin(3 * idleTimer) - Mathf.Pow(Mathf.Sin(1 * idleTimer), 3);

                        fairyModel.transform.Translate(new Vector2(idleX * Time.deltaTime, idleY * Time.deltaTime));

                        break;

                    case 4:
                        idleTimer += Time.deltaTime;
                        idleX      = Mathf.Cos(5 * idleTimer) - Mathf.Pow(Mathf.Cos(1 * idleTimer), 3);
                        idleY      = Mathf.Sin(5 * idleTimer) - Mathf.Pow(Mathf.Sin(1 * idleTimer), 3);

                        fairyModel.transform.Translate(new Vector2(idleX * Time.deltaTime, idleY * Time.deltaTime));

                        break;

                    case 5:
                        idleTimer += Time.deltaTime;
                        idleX      = Mathf.Cos(1 * idleTimer) - Mathf.Pow(Mathf.Cos(2 * idleTimer), 3);
                        idleY      = Mathf.Sin(1 * idleTimer) - Mathf.Pow(Mathf.Sin(3 * idleTimer), 3);

                        fairyModel.transform.Translate(new Vector2(idleX * Time.deltaTime, idleY * Time.deltaTime));

                        break;
                        #endregion
                    }

                    //////IDLE

                    if (Vector2.Distance(GameLogic.instance.currentPlayer.transform.position, transform.position) < distanceFromPlayerThreshold)
                    {
                        if (feedBackRenderer != null)
                        {
                            //if (feedBackRenderer.sprite != null) {
                            if (GameLogic.instance.currentPlayer != null)
                            {
                                GameLogic.instance.currentPlayer.interactableObject = this;
                            }

                            if (!InputManager.gamePadConnected)
                            {
                                feedBackRenderer.sprite = spriteE;
                                //spriteRenderer.transform.localScale = new Vector3(0.11f, 0.11f, 0.11f);
                                //feedBackRenderer.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
                            }
                            else
                            {
                                feedBackRenderer.sprite = spriteB;
                                // feedBackRenderer.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
                                //spriteRenderer.transform.localScale = new Vector3(0.11f, 0.11f, 0.11f);
                            }

                            FadeIn();

                            //} else {

                            //}
                        }
                        else
                        {
                            Debug.Log("Null SpriteRenderers");
                        }
                    }
                    else
                    {
                        if (GameLogic.instance.currentPlayer != null)
                        {
                            if (GameLogic.instance.currentPlayer.interactableObject == this)
                            {
                                GameLogic.instance.currentPlayer.interactableObject = null;
                                GameLogic.instance.eventState = GameLogic.EventState.NONE;
                                PauseCanvas.textIndex         = -1;
                                PauseCanvas.lastIndex         = -1;
                            }
                        }

                        if (!hasANewMessage)
                        {
                            FadeOut();
                            brotherScript.FadeOut();
                        }
                        else
                        {
                            int currentFrame = 0;

                            if (dotAnimationTimer > 0.3f && dotAnimationTimer < 0.6f)
                            {
                                currentFrame = 1;
                            }
                            else if (dotAnimationTimer > 0.6f && dotAnimationTimer < 0.9f)
                            {
                                currentFrame = 2;
                            }
                            else if (dotAnimationTimer > 0.9f)
                            {
                                dotAnimationTimer = 0;
                                currentFrame      = 0;
                            }
                            feedBackRenderer.sprite = dotsAnimation[currentFrame];



                            dotAnimationTimer += Time.deltaTime;

                            FadeIn();
                            brotherScript.FadeIn();
                        }
                    }

                    if (currentSpot.idLastMessage - currentSpot.idFirstMessage > 0)
                    {
                        if (GameLogic.instance.currentPlayer.transform.position.x > transform.position.x + distanceFromPlayerThreshold * 2.5)
                        {
                            if (targetIndex + 1 != fairySpotList.Count)
                            {
                                messageSet            = false;
                                setIdle               = false;
                                brotherScript.setIdle = false;

                                currentSpot = null;
                                brotherScript.currentSpot = null;

                                targetIndex++;
                                brotherScript.targetIndex++;
                                //spriteRendererObject.SetActive(false);
                                FadeOut();
                                brotherScript.FadeOut();
                            }
                        }
                        else if (!messageSet)
                        {
                            hasANewMessage               = true;
                            hasAMessage                  = true;
                            brotherScript.messageSet     = true;
                            brotherScript.hasANewMessage = true;
                            brotherScript.hasAMessage    = true;
                            messageSet = true;
                        }
                    }
                    else
                    {
                        brotherScript.hasANewMessage = false;
                        brotherScript.hasAMessage    = false;
                        hasAMessage    = false;
                        hasANewMessage = false;
                        if (GameLogic.instance.currentPlayer.transform.position.x >= transform.position.x)
                        {
                            if (targetIndex + 1 != fairySpotList.Count)
                            {
                                currentSpot = null;
                                brotherScript.currentSpot = null;
                                setIdle = false;
                                brotherScript.setIdle = false;
                                messageSet            = false;

                                targetIndex++;
                                brotherScript.targetIndex++;
                                //spriteRendererObject.SetActive(false);
                                FadeOut();
                                hasANewMessage = false;
                                brotherScript.hasANewMessage = false;
                                brotherScript.FadeOut();
                            }
                        }
                    }
                }
            }
        }
        else
        {
            FadeOut();

            brotherScript.FadeOut();
        }
    }
Exemplo n.º 3
0
 bool isNotFromThisWorld(FairySpot f)
 {
     return(worldAssignation != f.worldAssignation);
 }