示例#1
0
    //}

    void ChangeState(bool shouldIBeHappy)
    {
        if (shouldIBeHappy)
        {
            ChangeColor(comfyColor);
            amIHappy = true;
            HappyAnimation();
        }
        else
        {
            //Debug.Log("Too Many In Social Space!");
            ChangeColor(unComfyColor);
            amIHappy = false;
            UnhappyAnimation();
        }
        myIntrovert.spaceStateChange();
    }
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PersonalSpaceScript : MonoBehaviour
{

	//SpriteRenderer socSprite = GetComponent<SpriteRenderer>();
	public Color unComfyColor = new Color();
	public Color comfyColor = new Color();

	public bool amIHappy;
	IntrovertScript myIntrovert;
	ExtrovertScript myExtrovert;

	private int numBreach = 0;

	public float changeSpeed = 10.0f;
	public float changeTime = 0.25f;
	SpriteRenderer mySpriteRenderer;
	int currentState = 2;

	void ChangeColor(Color newColor)
	{
		//SpriteRenderer persRender = GetComponent<SpriteRenderer>();
		//persRender.color = newColor;
	}


	void OnTriggerEnter2D(Collider2D collision)
	{
		RaycastHit2D myRaycast = Physics2D.Linecast (transform.position, collision.transform.position, myIntrovert.backgroundLayerMask);
		if (myRaycast.collider == null) {
			numBreach++;
			Debug.Log(numBreach);


			if (numBreach > 2)
			{
				ChangeState (false);
				//Debug.Log("Too Many In Personal Space!");
				//ChangeColor(unComfyColor);
				//amIHappy = false;
			}
		}
	}


	void OnTriggerExit2D(Collider2D collision)
	{
		RaycastHit2D myRaycast = Physics2D.Linecast (transform.position, collision.transform.position, myIntrovert.backgroundLayerMask);
		if (myRaycast.collider == null) {
			numBreach--;
			Debug.Log(numBreach);

			if (numBreach > 2) {
				ChangeState (false);
				//Debug.Log ("Too Many In Personal Space!");
				//ChangeColor (unComfyColor);
				//amIHappy = false;
			}  
			else { 
				ChangeState (true);
				//ChangeColor (comfyColor);
				//amIHappy = true;
			}
		}
	}

	void ChangeState(bool shouldIBeHappy) {
		if (shouldIBeHappy) {
			ChangeColor (comfyColor);
			amIHappy = true;
			HappyAnimation ();

		}  else {
			//Debug.Log("Too Many In Social Space!");
			ChangeColor(unComfyColor);
			amIHappy = false;
			UnhappyAnimation ();
		}
		myIntrovert.spaceStateChange ();
		//myExtrovert.spaceStateChange ();
	}

	// Use this for initialization


	void Start()
	{

		mySpriteRenderer = GetComponent<SpriteRenderer> ();

		myIntrovert = GetComponentInParent<IntrovertScript> ();
		if (numBreach > 0) {
			ChangeState (false);
		}  else {
			ChangeState (true);
		}

		myExtrovert = GetComponentInParent<ExtrovertScript> ();
		if (numBreach > 0 && numBreach < 2) {
			ChangeState (false);
		}  else {
			ChangeState (true);
		}


	}

	public void UnhappyAnimation() {
		CancelInvoke ("UnhappyAnimation");
		if (currentState != 0) {
			currentState = 0;
		}  else if (currentState == 0) {
			currentState = 1;
		}
		Invoke ("UnhappyAnimation", changeTime);
	}

	public void HappyAnimation() {
		CancelInvoke ("UnhappyAnimation");
		currentState = 2;
		mySpriteRenderer.color = comfyColor;
	}

	void Update()
	{
		if (currentState == 0) {
			mySpriteRenderer.color = Color.Lerp (mySpriteRenderer.color, unComfyColor, Time.deltaTime * changeSpeed);
		}  else if (currentState == 1) {
			mySpriteRenderer.color = Color.Lerp (mySpriteRenderer.color, comfyColor, Time.deltaTime * changeSpeed);
		}
	}

}