From bb398ce2573eb4107381eb9da7e80ed5d59a1dcb Mon Sep 17 00:00:00 2001 From: jparent Date: Sun, 23 Aug 2015 01:40:55 -0400 Subject: [PATCH 1/2] make pillows pickable after being thrown --- Assets/Scripts/Child.cs | 53 ++++++++++++++++++++++------------------ Assets/Scripts/Pillow.cs | 38 ++++++++++++++++++++++++++-- 2 files changed, 65 insertions(+), 26 deletions(-) diff --git a/Assets/Scripts/Child.cs b/Assets/Scripts/Child.cs index 1782642..c3dcba8 100644 --- a/Assets/Scripts/Child.cs +++ b/Assets/Scripts/Child.cs @@ -55,19 +55,23 @@ public class Child : MonoBehaviour void OnTriggerEnter(Collider other) { if (other.tag == "Pillow"){ - - // picking up a pillow - if (this.pillow == null && !other.GetComponent().IsThrown) { - pillow = other.GetComponent(); - other.transform.parent = transform; // make the pillow a child of Child - other.transform.localPosition = other.transform.position + transform.forward; - other.GetComponent().enabled = false; + Pillow incomingPillow = other.GetComponent(); + + // picking up a pillow + if (this.pillow == null && !incomingPillow.IsThrown) { + + pillow = incomingPillow; + + pillow.transform.parent = transform; // make the pillow a child of Child + pillow.transform.localPosition = new Vector3(0f, 1.5f, 0f); + pillow.GetComponent().isKinematic = true; // dont make pillow obey to gravity when in a child's hands + // TODO: place the pillow correctly or animate or something... } // getting hit by a pillow - else if (other.GetComponent().IsThrown) { + else if (incomingPillow.IsThrown) { //player is hit Debug.Log("Child is hit by a pillow"); @@ -169,23 +173,24 @@ public class Child : MonoBehaviour } internal void Throw() { - Vector3 direction; - if (target != null) { - direction = target.transform.position - pillow.transform.position; + + if (pillow != null) { + + Vector3 direction; + + if (target != null) { + direction = target.transform.position - pillow.transform.position; + } + else { + direction = transform.forward; + } + direction = direction.normalized; + + + pillow.Throw(direction * ThrowForce); + + pillow = null; } - else { - direction = transform.forward; - } - direction = direction.normalized; - - - pillow.IsThrown = true; - pillow.transform.parent = null; // detach the pillow from the child object - pillow.GetComponent().isKinematic = false; - pillow.GetComponent().enabled = true; - pillow.GetComponent().AddForce(direction * ThrowForce, ForceMode.Impulse); - - pillow = null; } diff --git a/Assets/Scripts/Pillow.cs b/Assets/Scripts/Pillow.cs index e9fb8ee..09a0246 100644 --- a/Assets/Scripts/Pillow.cs +++ b/Assets/Scripts/Pillow.cs @@ -4,17 +4,51 @@ using System.Collections; public class Pillow : MonoBehaviour { public bool IsThrown = false; + + private bool IsPickable = true; + + private Collider _col; + private Rigidbody _rb; + // Use this for initialization void Start () { - + _col = GetComponent(); + _rb = GetComponent(); } // Update is called once per frame void Update () { - if (transform.position.y < -10) { + + if (transform.position.y < -1) { Destroy(this.gameObject); } } + + void OnCollisionEnter(Collision other) { + if (!IsPickable) { + // on first collision, revert the pillow as pickable + MakePickable(); + } + } + + + public void Throw(Vector3 force) { + IsThrown = true; + IsPickable = false; + transform.parent = null; // detach the pillow from the child object + _rb.isKinematic = false; + _col.enabled = true; + _rb.AddForce(force, ForceMode.Impulse); + } + + public void MakePickable() { + IsThrown = false; + IsPickable = true; + + _col.enabled = true; + _rb.isKinematic = false; + } + } From 5b6fd11745c845783b2f1b074e9d983fc12ff4bd Mon Sep 17 00:00:00 2001 From: jparent Date: Sun, 23 Aug 2015 01:59:49 -0400 Subject: [PATCH 2/2] give a box collider and better physics to Pillows --- Assets/Prefabs/Pillow.prefab | Bin 3314 -> 8412 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Assets/Prefabs/Pillow.prefab b/Assets/Prefabs/Pillow.prefab index c15055a2ef31a3b8e87c2e9c909ba2e46ddb90e1..b41c59fc9f29a9b68df0c2f51cc010d70ddcbfd1 100644 GIT binary patch literal 8412 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