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; } }
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); } } }
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); } }