标题说明了一切。
我为NPC提供了以下脚本,这应该让他看起来并且咆哮玩家。 然而,当玩家进入NPC的范围时,NPC开始向玩家走去而不是仅仅面对他。
有什么想法吗?
using UnityEngine;
public class Barking : MonoBehaviour {
public AudioSource barkingAudio;
private GameObject player;
private bool barking;
void Start () {
player = GameObject.FindGameObjectWithTag("Player");
barking = false;
}
void Update () {
if (barking)
lookAtPlayer();
}
private void lookAtPlayer()
{
transform.LookAt(player.transform.position, Vector3.up);
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject == player)
{
barking = true;
barkingAudio.mute = false;
barkingAudio.Play();
}
}
private void OnTriggerExit(Collider other)
{
if (other.gameObject == player) {
barking = false;
barkingAudio.mute = true;
barkingAudio.Stop();
}
}
}
答案 0 :(得分:0)
由于我使用Rigidbody并手动旋转变换,因此出现了一些意想不到的行为。
我在网上发现了一些代码,我可以用以下代码替换Transform.LookAt方法:
var qTo = Quaternion.LookRotation(player.transform.position - transform.position);
qTo = Quaternion.Slerp(transform.rotation, qTo, 10 * Time.deltaTime);
GetComponent<Rigidbody>().MoveRotation(qTo);
这解决了我的问题!