public void OnRelease() { if (currentGrabItem != null) { currentGrabItem.Release(currentInput); currentGrabItem = null; CallAnimationTrigger?.Invoke("", null); PlayAudio?.Invoke("Release", 0f); } }
// Update is called once per frame private void Update() { if (Input.GetKey(UpKeyCode)) { rigidbody.AddForce(Vector3.up * Thrust); } if (Input.GetKey(RightKeyCode)) { rigidbody.AddForce(Vector3.right * Thrust); } if (Input.GetKey(DownKeyCode)) { rigidbody.AddForce(Vector3.down * Thrust); } if (Input.GetKey(LeftKeyCode)) { rigidbody.AddForce(Vector3.left * Thrust); } if (Input.GetKey(ForwardKeyCode)) { rigidbody.AddForce(Vector3.forward * Thrust); } if (Input.GetKey(BackwardKeyCode)) { rigidbody.AddForce(Vector3.back * Thrust); } if (Input.GetKeyDown(GrabKeyCode)) { if (isGrabbing) { currentlyGrabbed.Release(); isGrabbing = false; currentlyGrabbed = null; animator.SetBool("grab", false); } else { Grab(); } } /*if (grabbedGameObject != null && !grabbedGameObject.GetComponent<WireClass>().enabled) * { * animator.SetBool("grab", false);TODO * }*/ }
void Release() { anim.SetBool("Grab", false); handState = HandState.Free; gameObject.layer = LayerMask.NameToLayer("HandFree"); if (grabbedObj != null) { grabbedObj.Release(); Vector2 vel = rb.velocity; if (vel.magnitude > 15f) { vel = vel.normalized * 15f; } var grabbedMono = grabbedObj as MonoBehaviour; grabbedMono.gameObject.GetComponent <Rigidbody2D>().AddForce(vel, ForceMode2D.Impulse); } }
// Update is called once per frame private void Update() { if (Input.GetKey(UpKeyCode)) { rigidbody.AddForce(Vector3.up * Thrust); } if (Input.GetKey(RightKeyCode)) { rigidbody.AddForce(Vector3.right * Thrust); } if (Input.GetKey(DownKeyCode)) { rigidbody.AddForce(Vector3.down * Thrust); } if (Input.GetKey(LeftKeyCode)) { rigidbody.AddForce(Vector3.left * Thrust); } if (Input.GetKey(ForwardKeyCode)) { rigidbody.AddForce(Vector3.forward * Thrust); } if (Input.GetKey(BackwardKeyCode)) { rigidbody.AddForce(Vector3.back * Thrust); } if (Input.GetKeyDown(GrabKeyCode)) { if (isGrabbing) { currentlyGrabbed.Release(); } else { Grab(); } } }
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(); } }