- Home /
Distance to object and rotation lock
Hi, I am making an NPC that when the player is close enough, will turn his head to look at the player. The NPC looks at me, but I want him to only look at me if I am within a certain distance. Also, his head can turn 360 degrees, how do I put on a rotation lock on the y axis, stopping the head from being any rotation other than the two that I define?
By the way, i am using C#.
using UnityEngine;
using System.Collections;
public class HeadLook : $$anonymous$$onoBehaviour {
public Transform target;
void Update()
{
if(target != null)
{
transform.LookAt(target);
}
}
}
First, you should calculate the distance with Vector3.Distance Second, you can calculate Quaternion and if it is more than a certain degree you should rotate whole transform with transform.rotate
Answer by robertbu · Sep 23, 2013 at 11:00 PM
Typically you want to way 12 to 24 hours before bumping. As for your question:
As @Tanshaydar suggests, Vector3.Distance() can be used to detect the distance:
if (Vector3.Distance(target.position, transform.position) < someValue)
As for restricting the angle, an easy way is to compare the transform.forward of the body to the transform.forward of the head. You can use Vector3.Angle(). I don't know you code, so but you need access to the body the head is on:
if (Vector3.Angle(transform.forward, body.forward) < someValue)
You also have one other issue. Since you don't rotate all the time, you likely don't want to use LookAt(). The issue is that since you don't know what the rotations is of the head when the object is acquired, the head can immediately snap from one rotation. You can solve this problem by rotating over time:
Quaternion q = Quaternion.LookRotation(target.position - transform.position);
transform.rotation = Quaternion.RotateTowards(transform.rotation, q, Time.deltaTime * speed);
Your answer
Follow this Question
Related Questions
Flip over an object (smooth transition) 3 Answers
Resetting rotation with Quaternion.Euler 1 Answer
How to make an empty child object not rotate with parent? 1 Answer
how to make NPCs face my player? I'm a beginner 1 Answer
Edit this script so that the player stops at a distance and attack? 0 Answers