Mini-Games-Game/Assets/PickUpObject.cs
Santi d68f3bd970 Unity: Throwable Objects
Able to throw objects that have been picked up
2024-04-28 17:14:08 +01:00

61 lines
1.7 KiB
C#

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UIElements;
public class PickUpObject : MonoBehaviour
{
public GameObject carryPosition;
public bool insideTrigger = false;
public bool carrying = false;
public GameObject carriableObject;
public float throwForce;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if(insideTrigger && Input.GetKeyDown(KeyCode.D) && !carrying)
{
carrying = true;
carriableObject.GetComponent<Rigidbody>().isKinematic = true;
}
else if(carrying && Input.GetKeyDown(KeyCode.D))
{
carrying = false;
carriableObject.GetComponent<Rigidbody>().isKinematic = false;
// Drop the object in the direction the player is moving and add a force to it depending on speed
carriableObject.GetComponent<Rigidbody>().AddForce(transform.forward * throwForce, ForceMode.Impulse);
}
if(carrying)
{
carriableObject.transform.position = carryPosition.transform.position;
carriableObject.transform.rotation = carryPosition.transform.rotation;
}
}
void OnTriggerEnter(Collider other)
{
if(other.gameObject.tag == "PickupObject")
{
carriableObject = other.gameObject;
// If player presses D while inside the trigger, pick up the object
insideTrigger = true;
}
}
void OnTriggerExit(Collider other)
{
if(other.gameObject.tag == "PickupObject")
{
insideTrigger = false;
}
}
}