// Implements |IPointerDownHandler.OnPointerDown|.
 public void OnPointerDown(PointerEventData eventData)
 {
     if (GameManager.editMode)
     {
         // Set position.
         Vector3 position = WorldFromScreenPosition(eventData.pressEventCamera,
                                                    eventData.pressPosition);
         pressOffset = transform.position - position;
     }
     else
     {
         // Strike!
         if (Input.GetMouseButtonDown(0))
         {
             Ruratae.ImpulseParticle(this, new Vector3(Random.Range(-1.0f, 1.0f),
                                                       Random.Range(-1.0f, 1.0f),
                                                       Random.Range(-1.0f, 1.0f)));
         }
         else if (Input.GetMouseButtonDown(1))
         {
             Ruratae.PluckParticle(this, 4.0f * new Vector3(Random.Range(-1.0f, 1.0f),
                                                            Random.Range(-1.0f, 1.0f),
                                                            Random.Range(-1.0f, 1.0f)));
         }
     }
 }
Beispiel #2
0
    void OnNoteOn(MidiJack.MidiChannel channel, int note, float velocity)
    {
        int     index         = note - keyNote;
        int     numOctavs     = index / 12;
        int     particleIndex = 7 * numOctavs + inverseMajorScale[(index + 60) % inverseMajorScale.Length];
        Vector3 direction     = new Vector3(Random.Range(-1.0f, 1.0f), Random.Range(-1.0f, 1.0f), Random.Range(-1.0f, 1.0f));
        float   strength      = velocity < 0.95f ? Mathf.Min(Mathf.Max(2 * velocity, 0.5f), 1.5f) : Mathf.Pow(2 * velocity, 2.0f);

        Ruratae.ImpulseParticle(movables[particleIndex % movables.Count], 0.05f * direction * strength);//2 * Vector3.one * Mathf.Pow(velocity, 2.0f));
    }