- Home /
Question by
Rye_Bread8 · Aug 20, 2020 at 05:37 AM ·
movementselectiondeselect
How to individualize objects with same script?
Essentially what I want is to click objects and be able to move them. When I click them the player should stop (Eventually will disappear) and the object will move individually.
Currently When right clicking to return to only-Player controls the objects move together.
Any insight? Im also a beginner in unity
Object Selection
public class ObjectSelection : MonoBehaviour
{
public Capture captureState;
public bool capture;
public Vector2 target;
// Start is called before the first frame update
private void Start()
{
Cursor.visible = false;
}
// Update is called once per frame
void Update()
{
//tracking cursor
Vector3 temp = Camera.main.ScreenToWorldPoint(Input.mousePosition);
temp.z = 5f;
transform.position = temp;
// captured and press right mouse = removal
if (captureState.capture == false)
{
if (Input.GetMouseButtonDown(1))
{
Debug.Log("You're not in an object");
captureState.capture = false;
capture = false;
}
}
if (captureState.capture == true)
{
if (Input.GetMouseButtonDown(1))
{
Debug.Log("You have been removed");
captureState.capture = false;
capture = false;
}
}
}
}
PlayerMovement using System.Collections; using System.Collections.Generic; using UnityEngine;
public class PlayerMovement : MonoBehaviour {
public Capture captureState;
public bool capture;
public Animator animator;
//public ObjectSelection CS;
// Update is called once per frame
void Update()
{
if (captureState.capture == false)
{
//Vector 3 = x/y/z motion. A vector that can move in 3 directions
//movement ( which is a new vector 3) gets input from Horizontal and Vertical unput. Z is nothing
Vector3 movement = new Vector3(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"), 0.0f);
transform.position = transform.position + movement * Time.deltaTime;
//animate depending on if the movement was changed - This uses a blend tree
animator.SetFloat("Horizontal", movement.x);
animator.SetFloat("Vertical", movement.y);
animator.SetFloat("Magnitude", movement.magnitude);
}
else captureState.capture = true;
}
}
ObjectMovement
public class ObjectMovement : MonoBehaviour
{
public Capture captureState;
public bool capture;
private Vector3 target;
private void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
Debug.Log(hit.collider.gameObject.name);
captureState.capture = true;
capture = true;
}
}
//activate movement if captured;
if (capture == true)
{
movement();
}
else capture = false;
}
//movement
void movement()
{
Vector3 movement = new Vector3(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"), 0.0f);
transform.position = transform.position + movement * Time.deltaTime;
}
}
Comment