0

私はここで動作する回避スクリプトを持っていますが、私が抱えている唯一の問題は、障害物を回避してジッターを引き起こしている場合でも、常にプレイヤーを見ようとすることです. レイキャストが障害物に当たらず、同時にプレイヤーに向かって移動する場合、どうすればプレイヤーだけを見ることができるのか疑問に思っていました。現在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;
       }

    }


}
4

1 に答える 1

0

レイキャストが障害物に当たらない場合にのみプレイヤーを見るようにするには、同時にプレイヤーに向かって移動するようにします。

ヒットポイントに一時的なウェイポイント (Vector3) を作成します

ウェイポイントからのレイキャストが障害物にぶつかるのをやめるまで、障害物に沿ってウェイポイントを移動します

このウェイポイントに移動

プレイヤーに向かって歩き続ける

于 2013-09-23T22:40:32.800 に答える