找回密码
 立即注册
查看: 336|回复: 0

unity中如何让敌人一直朝向玩家角色

[复制链接]
发表于 2023-3-30 18:39 | 显示全部楼层 |阅读模式
方法一:使用LookAt函数
LookAt函数可以使物体朝向另一个物体。在敌人脚本中,我们可以将玩家角色作为目标,然后在Update函数中使用LookAt函数来实现敌人一直朝向玩家。
以下是实现代码:
public Transform player;

void Update()
{
    transform.LookAt(player);
}这段代码中,我们首先定义了一个Transform类型的变量player来存储玩家角色的Transform组件。然后,在Update函数中,我们使用LookAt函数将敌人朝向玩家角色。
方法二:使用Quaternion.LookRotation函数
Quaternion.LookRotation函数可以返回一个朝向目标的四元数。在敌人脚本中,我们可以获取敌人到玩家角色的向量,然后使用Quaternion.LookRotation函数来计算出敌人朝向玩家的四元数。
以下是实现代码:
public Transform player;

void Update()
{
    Vector3 direction = (player.position - transform.position).normalized;
    Quaternion lookRotation = Quaternion.LookRotation(direction);
    transform.rotation = lookRotation;
}这段代码中,我们同样定义了一个Transform类型的变量player来存储玩家角色的Transform组件。然后,在Update函数中,我们首先获取敌人到玩家角色的向量,然后使用normalized函数将其单位化。接着,我们使用Quaternion.LookRotation函数计算出朝向玩家的四元数,并将其赋值给敌人的rotation属性。
只旋转一个轴的方法
如果只需要让敌人旋转z轴朝向玩家,可以在前面的代码中修改transform.LookAt(player)为以下代码:
Vector3 direction = (player.position - transform.position).normalized;
transform.rotation = Quaternion.LookRotation(Vector3.forward, direction);这段代码中,我们使用了Quaternion.LookRotation函数的另一种重载方式。第一个参数为固定的朝向方向,这里我们使用Vector3.forward来表示z轴正方向。第二个参数是我们计算出的敌人到玩家角色的向量。最后,我们将计算出的四元数赋值给敌人的rotation属性,实现了只旋转z轴朝向玩家的效果。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-14 16:51 , Processed in 0.114785 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表