Exemple #1
0
    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);
    }
Exemple #2
0
    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);
        }
    }
Exemple #3
0
    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);
            }
        }
    }
Exemple #4
0
 private void OnObjectSpawned(CuttableObject obj)
 {
     obj.OnDestroyed += OnObjectDestroyed;
 }