|
|
- #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<Renderer>().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<Rigidbody>().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<Renderer>().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<Rigidbody>().MoveRotation( GetComponent<Rigidbody>().rotation * Quaternion.Euler(towardsRotation * Time.deltaTime ) );
- turnForIter += Time.deltaTime;
- }
-
- GetComponent<Rigidbody>().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
|