- Home /
Move the player towards the cube to attack.
So i have those two scripts below and what i've managed so far is to move the player to the enemy but within a second.And for some reason when the MoveObject script is active the ClickToMove one doesn't work. I wonder if it is possible to fix this and if i can put something like a moveSpeed so that the player doesn't move instantly but smoothly you know :P Thanks!
using UnityEngine; using System.Collections;
public class MoveObject : MonoBehaviour {
public Transform target;
void Update() {
if(Input.GetMouseButtonUp(0)) {
transform.position = Vector3.Lerp(transform.position, target.position, Time.time);
}
}
}
using UnityEngine; using System.Collections;
public class moveOnMouseClick : MonoBehaviour { private Transform myTransform; // this transform private Vector3 destinationPosition; // The destination Point private float destinationDistance; // The distance between myTransform and destinationPosition
public float moveSpeed; // The Speed the character will move
void Start () {
myTransform = transform; // sets myTransform to this GameObject.transform
destinationPosition = myTransform.position; // prevents myTransform reset
}
void Update () {
// keep track of the distance between this gameObject and destinationPosition
destinationDistance = Vector3.Distance(destinationPosition, myTransform.position);
if(destinationDistance < .5f){ // To prevent shakin behavior when near destination
moveSpeed = 5;
}
else if(destinationDistance > .5f){ // To Reset Speed to default
moveSpeed = 8;
}
// Moves the Player if the Left Mouse Button was clicked
if (Input.GetMouseButtonDown(0)&& GUIUtility.hotControl ==0) {
Plane playerPlane = new Plane(Vector3.up, myTransform.position);
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
float hitdist = 0.0f;
if (playerPlane.Raycast(ray, out hitdist)) {
Vector3 targetPoint = ray.GetPoint(hitdist);
destinationPosition = ray.GetPoint(hitdist);
Quaternion targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
myTransform.rotation = targetRotation;
}
}
// Moves the player if the mouse button is hold down
else if (Input.GetMouseButton(0)&& GUIUtility.hotControl ==0) {
Plane playerPlane = new Plane(Vector3.up, myTransform.position);
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
float hitdist = 0.0f;
if (playerPlane.Raycast(ray, out hitdist)) {
Vector3 targetPoint = ray.GetPoint(hitdist);
destinationPosition = ray.GetPoint(hitdist);
Quaternion targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
myTransform.rotation = targetRotation;
}
// myTransform.position = Vector3.MoveTowards(myTransform.position, destinationPosition, moveSpeed * Time.deltaTime);
}
// To prevent code from running if not needed
if(destinationDistance > .5f){
myTransform.position = Vector3.MoveTowards(myTransform.position, destinationPosition, moveSpeed * Time.deltaTime);
}
}
}
Your answer
Follow this Question
Related Questions
Move object towards mouse but if mouse moves object fallows it's original path 0 Answers
What am I doing wrong? 1 Answer
Clunky Mouse Follow 1 Answer
How to move game object towards mouse on x and z only? 1 Answer
Multiple Cars not working 1 Answer