// 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))); } } }
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)); }