private void GenerateWood(int woodType, float centralOffset, float yScale, float girthScale, float cutRegionOffset, float cutRegionScale) { CuttableObject wood = GameObject.Instantiate(WoodPrefabs[woodType]).GetComponent <CuttableObject>(); wood.transform.position = new Vector3(centralOffset, 3f, 3f); wood.transform.localScale = new Vector3(girthScale, yScale, girthScale); wood.cutRegion.transform.localPosition += Vector3.up * cutRegionOffset; wood.cutRegion.transform.localScale = new Vector3(1.01f, cutRegionScale, 1.01f); Woods.Add(wood); }
private void SpawnWood(int woodType, float centralOffset, float yScale, float girthScale, float cutRegionOffset, float cutRegionScale) { if (InactiveWoods.Count > 0) { CuttableObject wood = InactiveWoods[Random.Range(0, InactiveWoods.Count)]; wood.transform.position = new Vector3(centralOffset, 3f, 3f); wood.transform.localScale = new Vector3(girthScale, yScale, girthScale); wood.cutRegion.transform.localPosition += Vector3.up * cutRegionOffset; wood.cutRegion.transform.localScale = new Vector3(1.01f, cutRegionScale, 1.01f); wood.gameObject.SetActive(true); InactiveWoods.Remove(wood); } else { GenerateWood(woodType, centralOffset, yScale, girthScale, cutRegionOffset, cutRegionScale); } }
private void OnTriggerEnter(Collider other) { if (GameManager.instance.IsGameOver()) return; if (other.tag.Equals("Wood")) { CuttableObject wood = other.GetComponent<CuttableObject>(); float cutRatio = 0.5f - (other.transform.position.x - transform.position.x) / (2 * other.transform.localScale.y); float cutRegionPosRatio = 0.5f - wood.cutRegion.transform.localPosition.y / (2 * wood.transform.localScale.y); if(Mathf.Abs(cutRatio - cutRegionPosRatio) > wood.cutRegion.transform.localScale.y / 2) { if(!_invulnerable) GameManager.instance.GameOver(); } else { dustThrower.Play(); StartCoroutine(shaker.Shake(0.3f, 0.1f)); GameManager.instance.IncrementScore(); other.GetComponent<CuttableObject>().GetCut(cutRatio); } } }
private void OnObjectSpawned(CuttableObject obj) { obj.OnDestroyed += OnObjectDestroyed; }