2016-04-21 15 views
0

さて、このスクリプトで数日間戦ってきました。私は他の面で進歩を遂げましたが、私の敵がプレイヤーのキャラクターを適切に追いかけるように見えません。C#の2D Unity Enemy Chase/Evadeスクリプト

空の子供の目がプレイヤーを見るまで、スクリプトは敵をさまようことになっています。それから、プレーヤーを追いかけるようになります。パックマンと思う。今のやっていることは、その1つのループを巡回して停止し、プレーヤーをまったく見ないことです。

これは私がそのスクリプトのために、これまで持っているコードです - すべてのヘルプやヒントをいただければ幸いです

using UnityEngine; 
using System.Collections; 

public class dudeFollow : MonoBehaviour { 
Transform tr_Player; 
float f_MoveSpeed = 3.0f; 
private DudeMove moveScript; 
public Transform eyes; 
public float sightRange = 3f; 


// Use this for initialization 
void Start() { 
    tr_Player = GameObject.FindGameObjectWithTag("Player").transform; 
    moveScript = GetComponent<DudeMove>(); 
} 

// Update is called once per frame 
void Update() { 
    RaycastHit hit; 
    if (Physics.Raycast (eyes.transform.position,eyes.transform.forward, out hit,sightRange) && hit.collider.CompareTag ("Player")) { 
    transform.position += transform.forward * f_MoveSpeed * Time.deltaTime; 
    moveScript.enabled = false; 
     } 

} 

}

答えて

0

あなたは2Dゲームを持っているので、敵はZ軸にも不思議に思うかもしれませんが、2Dであるため、見ることができません。したがって、メインシーンウィンドウで3Dモードに切り替えて、そうであるかどうかを確認してください。

もしそうなら、フレームごとにz軸を0にリセットし、角運動量を無効にするだけです。私はこれを2Dゲームで行いました。

void Update() { 
    RaycastHit hit; 
    if (Physics.Raycast (eyes.transform.position,eyes.transform.forward, out hit,sightRange) && hit.collider.CompareTag ("Player")) { 
    transform.position += transform.forward * f_MoveSpeed * Time.deltaTime; 
    moveScript.enabled = false; 
     } 
    transform.position.z = 0; // or something along those lines, I don't remember the syntax exactly. 
} 
関連する問題