Esempio n. 1
0
    private void DropItem()
    {
        if (myPickup != null)
        {
            RemoveJoint(myPickupJoint);
            myPickupJoint = null;
//			Rigidbody t_pickupRigidbody = myPickup.GetComponent<Rigidbody> ();
//
//			if (!(t_pickupRigidbody.GetComponent <CS_Prop_Heavy> ())) {
//				t_pickupRigidbody.useGravity = true;
//			}

            myPickup.OnHold   = false;
            myPickup.MyHolder = null;

//			t_pickupRigidbody.drag = 0;
            myPickup = null;
        }
    }
Esempio n. 2
0
    void OnCollisionEnter(Collision g_collision)
    {
        if (onKnockedOut)
        {
            return;
        }

//		Debug.Log (g_collision.gameObject.name + ": " + g_collision.impulse.sqrMagnitude);
        Rigidbody t_colRigidbody = g_collision.gameObject.GetComponent <Rigidbody> ();

        if (t_colRigidbody == null)
        {
            return;
        }

        CS_Prop_Pickup   t_pickUp   = g_collision.gameObject.GetComponent <CS_Prop_Pickup> ();
        CS_Prop_Knockout t_knockout = g_collision.gameObject.GetComponent <CS_Prop_Knockout> ();

        if (t_pickUp != null && t_knockout != null)
        {
            //is a pick up
            if (t_pickUp.MyHolder != null &&
                t_pickUp.MyHolder != this.gameObject)
            {
                //someone hit me with the object

                Debug.Log("someone hit me with the object");

                float t_sqrImpulse = g_collision.impulse.sqrMagnitude;

                if (t_sqrImpulse * t_knockout.GetSqrImpulseScale() >
                    myPlayerSettings.myKnockedOutSqrImpulse)
                {
                    Debug.Log("KnockOut");
                    Debug.LogWarning(g_collision.gameObject.name + ": " + t_sqrImpulse * t_knockout.GetSqrImpulseScale());

                    switch (t_knockout.GetKnockoutType())
                    {
                    case KnockoutType.Drop:
                        KnockedOut_Drop(g_collision);
                        break;

                    case KnockoutType.Stun:
                        KnockedOut_Stun(g_collision);
                        break;
                    }
                }

                if (t_pickUp.OnHold == false)
                {
                    t_pickUp.MyHolder = null;
                }
            }
        }

        CS_PlayerControl t_player = g_collision.gameObject.GetComponent <CS_PlayerControl> ();

        if (t_player != null)
        {
            //is a player

            if (t_player.GetOnDash())
            {
                KnockedOut_Drop(g_collision);
            }
        }
    }
Esempio n. 3
0
    private void PickUp()
    {
        if (myPickup == null)
        {
            //pick up

            int        t_layerMask           = (int)Mathf.Pow(2, 8) + (int)Mathf.Pow(2, 10);
            Collider[] hitColliders          = Physics.OverlapSphere(this.transform.position, myPlayerSettings.myPickUpRadius, t_layerMask);
            float      t_minSqrDistance      = myPlayerSettings.myPickUpRadius;
            Collider   t_closestBallCollider = null;
            for (int i = 0; i < hitColliders.Length; i++)
            {
                if (hitColliders [i].gameObject == this.gameObject ||
                    (hitColliders [i].GetComponent <CS_Prop_Pickup> () == null &&
                     hitColliders [i].GetComponent <CS_Prop_Button> () == null &&
                     hitColliders [i].GetComponent <CS_Prop_Wearable> () == null))
                {
                    continue;
                }
                float t_sqrDistance = Vector3.SqrMagnitude(this.transform.position - hitColliders [i].ClosestPoint(this.transform.position));
                if (t_sqrDistance < t_minSqrDistance)
                {
                    t_minSqrDistance      = t_sqrDistance;
                    t_closestBallCollider = hitColliders [i];
                }
            }

            if (t_closestBallCollider != null)
            {
                Rigidbody t_closestBallRigidbody = t_closestBallCollider.GetComponent <Rigidbody> ();

//				if (!(t_closestBallCollider.GetComponent <CS_Prop_Heavy> ())) {
//					t_closestBallRigidbody.useGravity = false;
//				} else {
//					t_springjoin.spring = 100000;
//				}

//				t_closestBallRigidbody.drag = 2;
                GameObject t_object = t_closestBallCollider.gameObject;

                CS_Prop_Button t_button = t_object.GetComponent <CS_Prop_Button> ();
                if (t_button != null)
                {
                    Debug.Log("on button");
                    CS_GameManager.Instance.OnButton(t_button.MyButtonType);
                }

                CS_Prop_Pickup t_pickUp = t_object.GetComponent <CS_Prop_Pickup> ();
                if (t_pickUp != null)
                {
                    myPickup = t_pickUp;

                    Vector3 t_connectedAnchor = Vector3.zero;
                    if (t_pickUp.IsBig)
                    {
                        t_connectedAnchor = t_object.transform.InverseTransformPoint(
                            t_closestBallCollider.ClosestPointOnBounds(this.transform.position)
                            );
                    }

                    myPickupJoint = CreateJoint(
                        t_closestBallRigidbody,
                        Vector3.up,
                        t_connectedAnchor
                        );

                    myPickup.OnHold   = true;
                    myPickup.MyHolder = this.gameObject;

                    onPickup = true;

                    // play sound
                    AiryAudioManager.Instance.GetAudioData("GrabSounds").Play(this.transform.position);
                }

                CS_Prop_Wearable t_wear = t_object.GetComponent <CS_Prop_Wearable> ();
                if (t_wear != null)
                {
                    if (myWearing != null)
                    {
                        DropWearing();
                    }
                    myWearing      = t_wear;
                    myWearingJoint = CreateJoint(t_closestBallRigidbody, Vector3.up * 1.5f, Vector3.zero);
                    myWearing.SetMyHolder(this);

                    Debug.Log("Wear!");
                    // play sound
                    AiryAudioManager.Instance.GetAudioData("GrabSounds").Play(this.transform.position);
                }

//				mySpriteRenderer.sprite = myPlayerSettings.myPickUpSprite;
            }
        }
        else
        {
            //throw
            onThrowCharge      = true;
            myThrowChargeTimer = 0;
            //			mySpriteRenderer.sprite = myPlayerSettings.myNormalSprite;

            // play sound
            AiryAudioManager.Instance.GetAudioData("DropSounds").Play(this.transform.position);
        }
    }