Пример #1
0
    private void OnTriggerExit(Collider other)
    {
        if (layerToDetect.value == (layerToDetect.value | (1 << other.gameObject.layer)))
        {
            switch (thisHitDetectType)
            {
            case HitDetectType.GivesDamage:
                overlapping = false;
                overlapper  = null;
                break;

            case HitDetectType.TakesDamage:

                break;

            case HitDetectType.AlertsEnemy:
                parent.Alert();

                break;

            case HitDetectType.ForgetEnemy:
                parent.Forget();
                break;

            case HitDetectType.SetCheckpoint:
                break;

            default:
                break;
            }
        }
    }
Пример #2
0
    public void buttonPressed(KeyCode k, float time, HitDetect hd)
    {
        if (song != null && song.hitMap.ContainsKey(k) && lastCheck[k] < song.hitMap[k].Length)
        {
            float offTiming = (time - startTime) - song.hitMap[k][lastCheck[k]];
            Debug.Log(offTiming + " " + song.hitMap[k][lastCheck[k]]);
            if (offTiming >= 0)
            {
                //get closest on the left
                for (int i = lastCheck[k]; i < song.hitMap[k].Length; i++)
                {
                    float lastTime = song.hitMap[k][i];
                    //if shorter, use that one
                    if ((time - startTime) - lastTime < offTiming && (time - startTime) - lastTime >= 0)
                    {
                        offTiming = (time - startTime) - lastTime;
                    }
                    //found shortest, make next one as start to check
                    else
                    {
                        break;
                    }
                }
            }

            //if in range
            if (Mathf.Abs(offTiming) <= 1f)
            {
                hd.gameObject.GetComponent <SpriteRenderer>().sprite = hd.spriteA;

                lastCheck[k] = lastCheck[k] + 1;

                if (Mathf.Abs(offTiming) <= 0.33)
                {
                    score += 500;
                    scoreText.gameObject.GetComponent <Text>().text = score.ToString();
                    Debug.Log("500 note at " + song.hitMap[k][lastCheck[k]]);
                    //hd.gameObject.GetComponent<SpriteRenderer>().color = Color.green;
                }
                else if (Mathf.Abs(offTiming) <= 0.66)
                {
                    score += 250;
                    scoreText.gameObject.GetComponent <Text>().text = score.ToString();
                    Debug.Log("250 note at " + song.hitMap[k][lastCheck[k]]);
                    hd.gameObject.GetComponent <SpriteRenderer>().color = Color.cyan;
                }
                else
                {
                    Debug.Log("MISSED note at " + song.hitMap[k][lastCheck[k]]);
                    hd.gameObject.GetComponent <SpriteRenderer>().color = Color.red;
                }
            }
            //if miss late, move to next one
            else if (offTiming > 0)
            {
                lastCheck[k] = lastCheck[k] + 1;
            }
        }
    }
Пример #3
0
 public virtual void Start()
 {
     player = GameObject.Find("Player").GetComponent <Player>();
     if (player == null)
     {
         Debug.LogError("No Player!");
     }
     Health                 = MaxHealth;
     rb                     = GetComponent <Rigidbody>();
     thisHitDetect          = GetComponent <HitDetect>();
     thisHitDetect.isActive = true;
     Health                 = MaxHealth;
 }
Пример #4
0
    private void OnTriggerEnter(Collider other)
    {
        if (layerToDetect.value == (layerToDetect.value | (1 << other.gameObject.layer)))
        {
            Vector3 forcehit = new Vector3();
            if (other.transform.position.x > transform.position.x)
            {
                forcehit.x = force.x;
                forcehit.y = force.y;
                forcehit.z = force.z;
            }
            else
            {
                forcehit.x = -force.x;
                forcehit.y = force.y;
                forcehit.z = force.z;
            }
            //Debug.Log("Switch type = " + thisHitDetectType + "parent is " + parent.name);
            switch (thisHitDetectType)
            {
            case HitDetectType.GivesDamage:
                overlapper = other.gameObject.GetComponent <HitDetect>();
                if (alwaysDoDamage)
                {
                    overlapper.AlwaysDoDamageToParent(damage, forcehit);
                }
                else
                {
                    if (isActive)
                    {
                        overlapper.DoDamageToParent(damage, forcehit);
                    }
                }
                overlapping = true;
                Debug.Log("hit " + damage + " " + other.gameObject.GetComponent <Character>().Health);

                break;

            case HitDetectType.TakesDamage:

                break;

            case HitDetectType.AlertsEnemy:
                parent.Alert();


                break;

            case HitDetectType.ForgetEnemy:
                break;


            case HitDetectType.SetCheckpoint:

                other.gameObject.GetComponent <Player>().SetNewCheckpoint(transform.position);
                break;



            default:
                break;
            }
        }
    }