コード例 #1
0
    void OnTriggerEnter(Collider pCollision)
    {
        //cars and pedestrians have reversed behaviours. If StopStation is on WALK,
        //pedestrians can walk and cars have to stop. If it's on STOP,
        //pedestrians have to stop and cars can keep going through their trajectory
        if (pCollision.transform.CompareTag("NPC"))
        {
            mColliders.Add(pCollision);

            switch (mCurrentState)
            {
            case States.WALK:
                pCollision.transform.GetComponent <PopulationEngine.NPCMotor> ().Walking();
                break;

            case States.STOP:
            default:
                pCollision.transform.GetComponent <PopulationEngine.NPCMotor> ().Waiting();
                break;
            }
//			Physics.IgnoreCollision (mCollider, pCollision, true);
        }
        else
        {
            if (pCollision.transform.CompareTag("Vehicle"))
            {
                PopulationEngine.NPCMotor motor = pCollision.transform.GetComponent <PopulationEngine.NPCMotor> ();
                RunOver runOver = pCollision.transform.GetComponent <RunOver> ();

                mColliders.Add(pCollision);
                switch (mCurrentState)
                {
                case States.WALK:

                    if (motor)
                    {
                        motor.Waiting();
                    }
                    else
                    {
                        runOver.Resume();
                    }
                    break;

                case States.STOP:
                default:
                    if (motor)
                    {
                        pCollision.transform.GetComponent <PopulationEngine.NPCMotor> ().Walking();
                    }
                    else
                    {
                        runOver.Stop();
                    }
                    break;
                }
            }
        }
    }
コード例 #2
0
    //end Fernando vars

    // Use this for initialization
    void Start()
    {
        mRigidbody = mRigidbody ?? GetComponent <Rigidbody> ();

        mRDHelper = mRDHelper ?? GetComponent <RagdollHelper1> ();
        mMotor    = mMotor ?? GetComponent <PopulationEngine.NPCMotor> ();

        //Get all the rigid bodies that belong to the ragdoll
        Rigidbody[] rigidBodies = GetComponentsInChildren <Rigidbody>();

        //Add the RagdollPartScript to all the gameobjects that also have the a rigid body
        foreach (Rigidbody body in rigidBodies)
        {
            RagdollPartScript1 rps1 = body.gameObject.AddComponent <RagdollPartScript1>();

            //Set the scripts mainScript reference so that it can access
            //the score and scoreTextTemplate member variables above
            rps1.mainScript1 = this;
        }
    }
コード例 #3
0
    //if this is a vehicle and it was colliding with any Vehicle or NPC, resume moving now
    void OnCollisionExit(Collision pCollision)
    {
        //			if (transform.CompareTag ("Vehicle"))
        //			{
        if (pCollision.transform.CompareTag("internal_collider") || pCollision.transform.CompareTag("NPC"))
        {
            PopulationEngine.NPCMotor motor = transform.parent.parent.GetComponent <PopulationEngine.NPCMotor>();
            RunOver runOver = transform.parent.parent.GetComponent <RunOver>();

            if (motor)
            {
                motor.Walking();
            }
            else
            {
                if (runOver)
                {
                    runOver.Resume();
                }
            }
        }
        //			}
    }
コード例 #4
0
 void OnCollisionEnter(Collision pCollision)
 {
     //			if (transform.CompareTag ("Vehicle"))
     //			{
     if (pCollision.transform.CompareTag("internal_collider") || pCollision.transform.CompareTag("NPC"))
     {
         PopulationEngine.NPCMotor motor = transform.parent.parent.GetComponent <PopulationEngine.NPCMotor>();
         RunOver runOver = transform.parent.parent.GetComponent <RunOver>();
         if (motor)
         {
             Debug.Log("collision from " + transform.parent.name + " with " + pCollision.transform.name + ", stopping");
             motor.Waiting();
         }
         else
         {
             if (runOver)
             {
                 runOver.Stop();
             }
         }
     }
     //			}
 }
コード例 #5
0
    // Update is called once per frame
    void Update()
    {
        switch (mCurrentState)
        {
        case States.WALK:
//				if (mCounter < 2)
//				{
//
//					if (mCollider.radius < 1.25f * cOriginalColliderRadius)
//					{
//						mCollider.radius += cRadiusIncreaseSpeed * Time.deltaTime;
//					} else
//					{
//						++mCounter;
//						mCollider.radius = 0.7f * cOriginalColliderRadius;
//					}
//				}

            for (int i = 0; i < mColliders.Count; ++i)
            {
                if (mColliders [i] != null)
                {
                    if (mColliders [i].transform.CompareTag("NPC"))
                    {
                        mColliders [i].transform.GetComponent <PopulationEngine.NPCMotor> ().Walking();
                    }
                    else
                    {
                        PopulationEngine.NPCMotor motor = mColliders [i].transform.GetComponent <PopulationEngine.NPCMotor> ();
                        RunOver runOver = mColliders [i].transform.GetComponent <RunOver> ();
                        if (motor)
                        {
                            mColliders [i].transform.GetComponent <PopulationEngine.NPCMotor> ().Waiting();
                        }
                        else
                        {
                            runOver.Resume();
                        }
                    }
                }
            }
            break;

        case States.STOP:
        default:
            for (int i = 0; i < mColliders.Count; ++i)
            {
                if (mColliders [i] != null)
                {
                    if (mColliders [i].transform.CompareTag("NPC"))
                    {
                        mColliders [i].transform.GetComponent <PopulationEngine.NPCMotor> ().Waiting();
                    }
                    else
                    {
                        PopulationEngine.NPCMotor motor = mColliders [i].transform.GetComponent <PopulationEngine.NPCMotor> ();
                        RunOver runOver = mColliders [i].transform.GetComponent <RunOver> ();
                        if (motor)
                        {
                            mColliders [i].transform.GetComponent <PopulationEngine.NPCMotor> ().Walking();
                        }
                        else
                        {
                            runOver.Stop();
                        }
                    }
                }
            }
            break;
        }
    }