private void AttemptGrab() { if (objectToGrab != null) { objectToGrab.Grab(this); } }
public void GrabGrabbable(IGrabbable grabbable) { if (CloserGrabbable == null || Carryer != null) { return; } grabbable.Grab(this); anim.SetBool("Holding", true); }
private void GetGrabbedObject() { ray = Cam.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit)) { if ((grabbedObject = hit.transform.GetComponent <IGrabbable>()) != null) { grabbedObject.Grab(mouseAnchor.rigidbody, GetMousePosition()); } } }
public void Grab() { if (IsHandFull || !ObjectToGrab) { return; } _objectInHand = ObjectToGrab.GetComponent <MonoGrabbable>().GetGrabbable(); _objectInHand.Grab(FixedJoint); ObjectToGrab = null; IsHandFull = true; }
public void IExecute() { if (grabbedBody == null) { RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero); if (hit.collider != null && hit.collider.gameObject.TryGetComponent <IGrabbable>(out grabbed)) { if (Vector2.Distance(player.position, hit.collider.transform.position) < maxRange) { grabbedBody = hit.collider.gameObject.GetComponent <Rigidbody2D>(); grabbedObject = hit.collider.transform; previousLayer = grabbedObject.gameObject.layer; grabbedObject.gameObject.layer = 11; //Magic number for Grabbed Object layer grabbed.Grab(); var grabEffect = grabbed.GetGrabEffect(); if (grabEffect.Item1 == Grabbable.GrabEffect.SlowDown) { //This is dumb and should be changed Movement movement = player.gameObject.GetComponent <Movement>(); Debug.Log(grabEffect.Item2); uneditedSpeed = movement.speed; movement.speed = uneditedSpeed * (1 / grabEffect.Item2); } } } } else { var grabEffect = grabbed.GetGrabEffect(); if (grabEffect.Item1 == Grabbable.GrabEffect.SlowDown) { player.gameObject.GetComponent <Movement>().speed = uneditedSpeed; } grabbedObject.gameObject.layer = previousLayer; grabbedBody = null; grabbedObject = null; grabbed.Release(); } }
void Grab() { anim.SetBool("Grab", true); handState = HandState.Grab; gameObject.layer = LayerMask.NameToLayer("HandGrabbed"); if (TryInteract()) { return; } IGrabbable obj = null; Collider2D[] colliders = Physics2D.OverlapCircleAll(grabPosition.position, grabRadius, grabMask); if (colliders.Length > 0) { obj = colliders[0].GetComponent <IGrabbable>(); float min = (grabPosition.position - colliders[0].transform.position).magnitude; for (int i = 1; i < colliders.Length; i++) { float d = (grabPosition.position - colliders[i].transform.position).magnitude; if (d < min) { min = d; obj = colliders[i].GetComponent <IGrabbable>(); } } } grabbedObj = obj; if (grabbedObj != null) { grabbedObj.Grab(); } }
private void Grab() { RaycastHit hit; if (Physics.Raycast(transform.position, Vector3.forward, out hit, GrabDistance)) { Debug.DrawRay(transform.position, Vector3.forward * hit.distance, Color.yellow); Debug.Log(hit.ToString()); GameObject grabbedGameObject = hit.transform.gameObject; IGrabbable grabbable = grabbedGameObject.GetComponent <IGrabbable>(); if (grabbable != null) { grabbable.Grab(this); isGrabbing = true; currentlyGrabbed = grabbable; } } else { Debug.DrawRay(transform.position, Vector3.forward * GrabDistance, Color.yellow); } }
public void OnGrab() { if (character == null) { return; } Ray ray = new Ray(this.transform.position, lookDirection.normalized * character.GetInteractionRange()); RaycastHit2D hitBox = Physics2D.CircleCast(ray.GetPoint(character.GetInteractionRange() / 2), character.GetInteractionRange() / 2, lookDirection.normalized, character.GetInteractionRange(), interactionLayer); if (hitBox) { RaycastHit2D hitInfo = Physics2D.Raycast(this.transform.position, hitBox.transform.position - this.transform.position, character.GetInteractionRange(), interactionLayer); if (hitInfo) { IGrabbable item = hitInfo.transform.gameObject.GetComponentInParent <IGrabbable>(); if (item != null) { currentGrabItem = item.Grab(motor, hitInfo.point); CallAnimationTrigger?.Invoke("", null); PlayAudio?.Invoke("Grab", 0f); } } } }
private bool Grab(GameObject gameObject) { BeatMap.Log("Saber called grab on " + gameObject.name); IGrabbable grabbable = gameObject.GetComponent <IGrabbable>(); if (grabbable == null) { grabbable = gameObject.GetComponentInParent <IGrabbable>(); } if (grabbable == null) { Debug.LogWarning("Object not grabbable - " + gameObject.name); return(false); } if (grabbable.IsGrabbed()) { Debug.LogWarning("Object already grabbed - " + gameObject.name); return(false); } grabbable.Grab(this); grabbing = true; addVibration(.5f, .5f, true); return(true); }
void OnTriggerEnter2D(Collider2D other) { if (headState() == LamaController.HeadState.Launched) { IGrabbable grab = other.GetComponent <IGrabbable>(); if (grab != null) { Debug.Log("Grabbed"); //Alors on grab le bouzingue grab.Grab(gameObject); grabbedObject = other.gameObject; foreach (CircleCollider2D c in cc) { c.enabled = false; } maxDistance = GetDistance(0, NeckNodes.Count); rigid.velocity = Vector2.zero; lama.headState = LamaController.HeadState.Grabbing; } } }