仅在射线未击中障碍物时才看向玩家

我有一个规避脚本,它可以正常工作,但唯一的问题是它总是在绕过障碍物时试图看向玩家,导致抖动。我想知道如何让它仅在射线未击中障碍物时才看向玩家,同时继续向玩家移动。任何帮助都将不胜感激,目前使用的是Unity3D

using UnityEngine;using System.Collections;public class enemyAI : MonoBehaviour{       public Transform target;    public float moveSpeed;    public float rotationSpeed;    public float minDistance = 0.5f;    public static enemyAI enemyAIself;     RaycastHit hit;    void Awake()    {       enemyAIself = this;       }    void Start ()     {       GameObject goTo = GameObject.FindGameObjectWithTag("Player");       target = goTo.transform;    }    void Update ()     {       Vector3 dir = (target.position - transform.position).normalized;       if (Physics.Raycast(transform.position, transform.forward, out hit, 5.0f, (1<<8)))       {       Debug.DrawRay(transform.position, hit.point, Color.blue);       dir += hit.normal  * 50;       }       Vector3 leftR = transform.position;       Vector3 rightR = transform.position;       leftR.x -= 2;       rightR.x += 2;       if (Physics.Raycast(leftR, transform.forward, out hit, 5.0f, (1<<8)))       {        Debug.DrawRay(leftR, hit.point, Color.blue);          dir += hit.normal  * 50;       }       if (Physics.Raycast(rightR, transform.forward, 5.0f, (1<<8)))       {       Debug.DrawRay(rightR, hit.point, Color.blue);       dir += hit.normal  * 50;       }        Quaternion rot = Quaternion.LookRotation(dir);       transform.rotation = Quaternion.Slerp(transform.rotation, rot, rotationSpeed * Time.deltaTime);       if (Vector3.SqrMagnitude(target.position - transform.position)> (minDistance *  minDistance))       {         //move towards the target         transform.position += transform.forward * moveSpeed * Time.deltaTime;       }    }}

回答:

要让它仅在射线未击中障碍物时才看向玩家,同时继续向玩家移动,你可以

在击中点创建一个临时路径点(Vector3)

沿着障碍物移动路径点,直到从该点发出的射线不再击中障碍物

移动到这个路径点

继续向玩家前进

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注