#if !UNITY_FLASH using UnityEngine; using System.Collections; using DentedPixel; public class GeneralEventsListenersCS : MonoBehaviour { Vector3 towardsRotation; float turnForLength = 0.5f; float turnForIter = 0f; Color fromColor; // It's best to make this a public enum that you use throughout your project, so every class can have access to it public enum MyEvents{ CHANGE_COLOR, JUMP, LENGTH } void Awake(){ LeanTween.LISTENERS_MAX = 100; // This is the maximum of event listeners you will have added as listeners LeanTween.EVENTS_MAX = (int)MyEvents.LENGTH; // The maximum amount of events you will be dispatching fromColor = GetComponent().material.color; } void Start () { // Adding Listeners, it's best to use an enum so your listeners are more descriptive but you could use an int like 0,1,2,... LeanTween.addListener(gameObject, (int)MyEvents.CHANGE_COLOR, changeColor); LeanTween.addListener(gameObject, (int)MyEvents.JUMP, jumpUp); } // ****** Event Listening Methods void jumpUp( LTEvent e ){ GetComponent().AddRelativeForce(Vector3.forward * 300f); } void changeColor( LTEvent e ){ Transform tran = (Transform)e.data; float distance = Vector3.Distance( tran.position, transform.position); Color to = new Color(Random.Range(0f,1f),0f,Random.Range(0f,1f)); LeanTween.value( gameObject, fromColor, to, 0.8f ).setLoopPingPong(1).setDelay(distance*0.05f).setOnUpdate( (Color col)=>{ GetComponent().material.color = col; } ); } // ****** Physics / AI Stuff void OnCollisionEnter(Collision collision) { if(collision.gameObject.layer!=2) towardsRotation = new Vector3(0f, Random.Range(-180, 180), 0f); } void OnCollisionStay(Collision collision) { if(collision.gameObject.layer!=2){ turnForIter = 0f; turnForLength = Random.Range(0.5f, 1.5f); } } void FixedUpdate(){ if(turnForIter < turnForLength){ GetComponent().MoveRotation( GetComponent().rotation * Quaternion.Euler(towardsRotation * Time.deltaTime ) ); turnForIter += Time.deltaTime; } GetComponent().AddRelativeForce(Vector3.forward * 4.5f); } // ****** Key and clicking detection void OnMouseDown(){ if(Input.GetKey( KeyCode.J )){ // Are you also pressing the "j" key while clicking LeanTween.dispatchEvent((int)MyEvents.JUMP); }else{ LeanTween.dispatchEvent((int)MyEvents.CHANGE_COLOR, transform); // with every dispatched event, you can include an object (retrieve this object with the *.data var in LTEvent) } } } #endif