// Start is called before the first frame update IEnumerator Start() { boxHealthState = BoxHealthState.Healthy; if (boxOrigin == BoxOrigin.Instantiate) { boxOccupiedState = BoxOccupiedState.Unoccupied; } float heightToFallTo = BOX_Y; if (boxOrigin == BoxOrigin.Instantiate) { //Debug.Log("instantiated boxes"); obstaclesInColumn = GridWorld.GetColumnObjects(transform.position); if (obstaclesInColumn.Count > 0) { //Debug.Log("obstacles count greater than 0! " + obstaclesInColumn[0].transform.name); Box boxObstacle = obstaclesInColumn[0].GetComponent <Box>(); if (boxObstacle != null && boxObstacle.countDownS.Elapsed() < (0.9f * boxObstacle.HEALTH)) { heightToFallTo = BOX_Y + obstaclesInColumn[0].GetComponent <SpriteRenderer>().bounds.size.y; //Debug.Log("!setting height of fall " + BOX_Y); } } Tween boxFallTween = transform.DOLocalMoveY(heightToFallTo, FALL_SPEED).SetSpeedBased().SetEase(Ease.InExpo); //yield return boxFallTween.WaitForPosition(0.8f); yield return(boxFallTween.WaitForCompletion()); SoundManager.instance.PlaySingle(SoundManager.instance.crash, 0.2f); //OnComplete(()=> //{ if (obstaclesInColumn.Count > 0) { //Debug.Log("obstacles count greater than 0!"); Box boxObstacle = obstaclesInColumn[0].GetComponent <Box>(); if (boxObstacle != null) { Debug.Log("setting boxOnTop variable"); boxObstacle.boxOnTop = gameObject; } } if (boxOccupiedState == BoxOccupiedState.Unoccupied) { //only broadcast event if first box on ground if (heightToFallTo > -11.5f && heightToFallTo < -11f) { OnBoxEmpty?.Invoke(gameObject); } } } CountDown(); //StartCoroutine(CountDown()); //}); GridWorld.RegisterObstacle(transform, false); //Debug.Log("box LOC: " + GridWorld.GetSquare(transform.position)[0] + " : " + GridWorld.GetSquare(transform.position)[1]); }
public void CountDown() { countDownS = DOTween.Sequence(); countDownS.AppendInterval(0.6f * HEALTH); countDownS.AppendCallback(() => { deRegisterObstacle = false; //cracked box sprite if (crackedSprite != null) { mySpriteRenderer.sprite = crackedSprite; SoundManager.instance.PlaySingle(SoundManager.instance.smallCrack, 0.15f); } boxHealthState = BoxHealthState.Cracked; }); countDownS.AppendInterval(0.4f * HEALTH); countDownS.AppendCallback(() => { //broken box sprite if (deRegisterObstacle == false) { deRegisterObstacle = true; GridWorld.RegisterObstacle(transform, true); if (boxOnTop != null) { boxOnTop.GetComponent <Box>().DropDown(); } if (crackedSprite != null) { GameObject dust = Instantiate(Resources.Load("Prefabs/dust", typeof(GameObject)), new Vector3(transform.position.x, transform.position.y - 3.35f, 0f), Quaternion.identity, transform) as GameObject; dust.GetComponent <ParticleSystem>().Play(); //SoundManager.instance.PlaySingle(SoundManager.instance.bigBreak); SoundManager.instance.PlaySingle(SoundManager.instance.singleBoxBreak, 0.2f); } boxHealthState = BoxHealthState.Broken; } }); countDownS.AppendInterval(0.75f); countDownS.AppendCallback(() => { if (crackedSprite != null && mySpriteRenderer.sprite != brokenSprite) { mySpriteRenderer.sprite = brokenSprite; transform.localPosition = new Vector3(transform.localPosition.x, transform.localPosition.y - 3.35f, transform.localPosition.z); } }); countDownS.AppendInterval(2f); countDownS.AppendCallback(() => { mySpriteRenderer.DOFade(0f, 1f).OnComplete(() => { Destroy(gameObject); }); }); //yield return new WaitForSeconds(0.6f * HEALTH); // deRegisterObstacle = false; // //cracked box sprite // if(crackedSprite != null) // { // mySpriteRenderer.sprite = crackedSprite; // SoundManager.instance.PlaySingle(SoundManager.instance.smallCrack, 0.15f); // } // boxHealthState = BoxHealthState.Cracked; //yield return new WaitForSeconds(0.4f * HEALTH); ////broken box sprite // if (deRegisterObstacle == false) // { // deRegisterObstacle = true; // GridWorld.RegisterObstacle(transform, true); // if (boxOnTop != null) // { // boxOnTop.GetComponent<Box>().DropDown(); // } // if (crackedSprite != null) // { // GameObject dust = Instantiate(Resources.Load("Prefabs/dust", typeof(GameObject)), new Vector3(transform.position.x, transform.position.y - 3.35f, 0f), Quaternion.identity, transform) as GameObject; // dust.GetComponent<ParticleSystem>().Play(); // //SoundManager.instance.PlaySingle(SoundManager.instance.bigBreak); // SoundManager.instance.PlaySingle(SoundManager.instance.singleBoxBreak, 0.2f); // } // boxHealthState = BoxHealthState.Broken; // } //yield return new WaitForSeconds(0.75f); // if (crackedSprite != null && mySpriteRenderer.sprite != brokenSprite) // { // mySpriteRenderer.sprite = brokenSprite; // transform.localPosition = new Vector3(transform.localPosition.x, transform.localPosition.y-3.35f, transform.localPosition.z); // } //yield return new WaitForSeconds(2f); // mySpriteRenderer.DOFade(0f, 1f).OnComplete(()=> { // Destroy(gameObject); // }); //fade out //destroy }