Hello guys!
Well, i did a mouse-click movement and teleport scripts. Then I used mouse click movement to do the teleport script, separeted it works as well. But when i try use both in one object it was shakin how the object trying go to the destination walk point staying in the teleport destination position. i know that i need to update the detinantion position in mouse-click movement to the same destination position of teleport script. I saw some topics, so i think i have to use GetComponent, right? Srry but i’m a newbe in unity. There are my scripts:
void Start () {
myTransform1 = transform; // sets myTransform to this GameObject.transform
destinationPosition1 = myTransform1.position; // prevents myTransform reset
}
void Update () {
// keep track of the distance between this gameObject and destinationPosition
destinationDistance1 = Vector3.Distance(destinationPosition1, myTransform1.position);
// Moves the Player if the Left Mouse Button was clicked
if (Input.GetMouseButtonDown(0)) {
Plane playerPlane = new Plane(Vector3.up, myTransform1.position);
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
float hitdist = 0.0f;
if (playerPlane.Raycast(ray, out hitdist)) {
destinationPosition1 = ray.GetPoint(hitdist);
}
}
// To prevent code from running if not needed
if(destinationDistance1 > .5f){
myTransform1.position = destinationPosition1;
}
}
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 = 0;
}
else if(destinationDistance > .5f){ // To Reset Speed to default
moveSpeed = 3;
}
// Moves the Player if the Left Mouse Button was clicked
if (Input.GetMouseButtonDown(1)) {
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;
}
}
// To prevent code from running if not needed
if(destinationDistance > .5f){
myTransform.position = Vector3.MoveTowards(myTransform.position, destinationPosition, moveSpeed * Time.deltaTime);
}
}