0
#pragma strict

var flare : GameObject;
var speed : float = 1;

function Start () 
{
    flare = GameObject.FindGameObjectWithTag("flare");
}

function Update () 
{

    var distance = Vector3.Distance(flare.transform.position, transform.position);

    if (distance < 100)
    {
        Debug.Log ("Enemy is close to flare");

        var delta = flare.transform.position - transform.position;
        delta.Normalize();

        var moveSpeed = speed * Time.deltaTime;

        transform.position = transform.position + (delta * moveSpeed);
    }
    else
    {
        Debug.Log("Not close yet" + distance);
    }

}

これは私が持っているスクリプトです。マウスを右クリックすると、フレアが発射されます。私がやりたいのは、敵がアクティブなときにフレアに向かって移動することです。現時点では、敵はそれを無視します。誰かが理由を知っている可能性はありますか?

返信をお待ちしております。

4

1 に答える 1

1

Javascriptについてはよくわかりませんが、C#(これは似ています)では、いくつかの変更を加えることができます。

void Start( ){
    flare = GameObject.FindObjectWithTag( "flare" ).transform;
}
void Update( ){
    var distance = Vector3.Distance(flare.transform.position, transform.position);
    if( distance < 100 ){
        transform.position = Vector3.MoveTowards( transform.position, 
                                                  flare.transform.position,
                                                  speed * Time.deltaTime );
    } else {
        //Do otherthings
    }
}

このスクリプトが AI gameobect にアタッチされているか、それを参照していることを確認してください (スクリプトから、スクリプトが AI オブジェクトにあると想定しています)。

于 2013-11-07T00:24:05.757 に答える