private void OnTriggerEnter2D(Collider2D other_collider) { Rigidbody2D other_rigid_body = other_collider.gameObject.GetComponent <Rigidbody2D>(); PlatformAnimator platform_animator = other_collider.gameObject.GetComponent <PlatformAnimator>(); // add objects that overlap the hitbox to objects in range if (other_rigid_body != null && platform_animator == null) { combat_script.addObjectInRange(other_collider.gameObject); // add to grab objects in range grab_script.AddObjectInRange(other_collider.gameObject); } }
private void findObjectToGrab() { float min_distance = Mathf.Infinity; float distance_to_other = Mathf.Infinity; foreach (GameObject o in objects_in_range) { //Debug.Log(o.name + " in Box"); if (!o.activeSelf) { continue; } PlatformAnimator animator = o.GetComponent <PlatformAnimator>(); if (animator != null) { continue; } Vector3 forward_vector = getForwardVectorFromScale(); //grab only objects in front of player Vector3 vec_to_other = (o.transform.position - gameObject.transform.position); distance_to_other = getDistanceToOther(o); if (Vector3.Dot(vec_to_other.normalized, forward_vector) < 0.7f || distance_to_other > grab_range) { // other object is not in front of player continue; } // grab the closest object in front of player if (distance_to_other < min_distance) { min_distance = distance_to_other; grabbed_object = o; grabbing = true; SoundEffectScript.Instance.playGrabSound(transform.position); } } }