- Home /
Rays for movement?(C#)
Are rays the best way to move in my situation? I want to make an rts, left click fires a ray for selection, this works perfectly, but the right click to move does not work so well. My code will be below this but here's basically what's going wrong. At the moment, the player object is moving in the direction of the ray, but not TO the ray. So you select a Vector3, it moves in the direction of that selection per click, then continues to go in that direction if you leave your mouse there clicking. It doesn't stop moving when it reaches the point of impact with the ray. It made me question A) My code. and B) How smart of an idea it is to use rays for movement.
Code:
using UnityEngine; using System.Collections;
/ISSUE SECT: AT THE MOMENT, PLAYER IS MOVING IN THE DIRECTION OF THE POINTER NOT TO THE POINTER /
public class Control : MonoBehaviour { //Variable Declaration public Vector3 rayPoint;
public GameObject player;
public bool selected = false;
// Raybased Variables
public RaycastHit hit = new RaycastHit ();
public Ray thisRay;
void Start ()
{
//Nothing here yet.
}
//Selected checks to see if you have selected "Player".
void Selected ()
{
//Using my Ray variable. Tying it to the screenpoint of the main camera.
thisRay = Camera.main.ScreenPointToRay (Input.mousePosition);
//So if it doesn't hit anything, return (early leave from function)
if (!Physics.Raycast (thisRay, out hit))
return;
//If the collider/rigidbody hit reads "Player"
if (hit.transform.CompareTag ("Player")) {
selected = true;
hit.transform.renderer.material.color = Color.blue;
}
}
void MovePlayer ()
{
if (selected == true) {
//We want it to go not in the direction of the ray, but TO the ray.
if(Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit))
player.transform.Translate(hit.point);
}
}
//Update will deal with inputs.
void Update ()
{
//If left click access Select Method.
if (Input.GetMouseButtonDown (0))
{
Selected ();
}
if (Input.GetMouseButtonDown (1))
{
MovePlayer ();
}
Debug.DrawLine (thisRay.origin, hit.point, Color.red);
}
}
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Third Person Multi-player Swapping Controls 0 Answers
Player lives script 1 Answer
How to undo destroying a component, after 5 seconds. 0 Answers