Question by
Whinsekk2002 · Nov 15, 2019 at 02:57 AM ·
script.programmingproblema
Change from mouse click to free space to a canvas button
Hello, I have a script problem that is not resolved, I want this script to keep the object at hand without holding down the left mouse button and that only works by giving a button on a canvas and pressing that button again I dropped the object I had in hand, I hope to answer.
Here the script:
using UnityEngine;
using System.Collections;
public class CarryObject : MonoBehaviour
{
public float interactDistance = 3;
public float carryDistance = 2.5f;
public LayerMask interactLayer;
private Transform carryObject;
private bool haveObject;
void Update()
{
//Raycast variables.
Ray ray = new Ray(Camera.main.transform.position, Camera.main.transform.forward);
RaycastHit hit;
//Raycasting mechanics.
if (Physics.Raycast(ray, out hit, interactDistance, interactLayer))
{
//If we press LMB, it will update the carryObject and its gravity.
if (Input.GetMouseButtonDown(0))
{
carryObject = hit.transform;
carryObject.GetComponent<Rigidbody>().useGravity = false;
haveObject = true;
}
}
//If we release LMB and we have an object in hand, it will reset the carryObject.
if (Input.GetMouseButtonUp(0))
{
if (haveObject)
{
haveObject = false;
carryObject.GetComponent<Rigidbody>().useGravity = true;
carryObject = null;
}
}
//If we have an object in hand, we update its position and smooth it out with basic interpolation.
if (haveObject)
{
carryObject.position = Vector3.Lerp(carryObject.position, Camera.main.transform.position + Camera.main.transform.forward * carryDistance, Time.deltaTime * 8);
carryObject.GetComponent<Rigidbody>().velocity = Vector3.zero;
}
}
}
Comment
Your answer
Follow this Question
Related Questions
What is Coroutine, Yiel and IENumerator? 1 Answer
How to make the player die when hit the ground? 0 Answers
Map creator inside my game 0 Answers
Check if something just pass through an object or stay some fixed time on it 1 Answer
Is it appropriate to have PlayerPref IDs the same as variable names? 0 Answers