void Start() { brotherScript = brotherObject.GetComponent <FairySpot>(); canBounce = false; InitTransformable(); isPunchable = false; isBreakable = false; interactuableBySmash = false; offset = GameLogic.instance.worldOffset; }
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(); } }
bool isNotFromThisWorld(FairySpot f) { return(worldAssignation != f.worldAssignation); }