2016-07-27 6 views
-1
using UnityEngine; 
using System.Collections; 
using System.Collections.Generic; 

public class Waypoints : MonoBehaviour { 

    public Transform[] waypoint; 
    public float patrolSpeed; 
    public bool loop = true; 
    public int dampingLook = 4; 
    public float pauseDuration; 
    private float curTime; 
    private int currentWaypoint = 0; 
    public CharacterController character; 

    // Use this for initialization 
    void Start() { 


    } 

    void LateUpdate(){ 

     if(currentWaypoint < waypoint.Length){ 
      patrol(); 
     }else{  
      if(loop){ 
       currentWaypoint= 0; 
      } 
     } 
    } 

    void patrol(){ 

     Vector3 nextWayPoint = waypoint[currentWaypoint].position; 

     // Keep waypoint at character's height 
     nextWayPoint.y = transform.position.y; 

     // Get the direction we need to move to 
     // reach the next waypoint 
     Vector3 moveDirection = nextWayPoint - transform.position; 

文字を意味する変換ですか?だからtransform.positionはこの場合の文字位置を取得しますThirdPersonController私はそれにスクリプトを追加しましたか?スクリプトが文字への変換に属していることをどのように知っていますか?トランスフォームとは何か、トランスフォームとは何ですか?

Transform _transformを実行している場合、_transformと現在使用している変換の違いは何ですか?

たとえば、文字の開始位置を設定または取得する場合は、スクリプトで行うことができます。public Transform _transform;次に、start関数で:_transform = GetComponent();例えば、私は_transformから位置を得ることができますか?

+0

:あなたが使用することができ、あなたの文字の位置を設定するには :

private void Awake(){ _transform = transform; } 

はEDIT:しかし、我々はまだ、実際の参照を取得し、少なくとも一度に変換呼び出す必要がありますタグ。 – spender

+1

実際、SOは「チュートリアル」指向のサイトではありません。 – Fattie

+0

何らかの理由でアンダースコアを含む変数名を使用することはありません。 – Fattie

答えて

0

まあ、変換変換としては、型のプロパティ変換であるタイプです。 変換を取得すると、スクリプトが割り当てられているGameObjectの変形が常に得られます。

あなたの例の変換では、Waypointの変換を参照しています。 文字の変形を受け取るには、character.transformを使用してそれを取得する必要があります。 doning

あなたはおそらく見ている人は:

private Transform _transform; 

私たちは、あなたは非常に頻繁にそれを行う場合は変換呼び出すと、小さなパフォーマンスヒットをすることができので、私たち自身のメンバーの中に、現在のゲームオブジェクトの変換をキャッシュするためにこれを行います。無関係であなたの質問にタグ付けしないでください

character.transform.position = someVector3; 
+2

こんにちは、良いニュース、彼らはU5の 'GameObject'と' Component'を大幅に改良したので、最近のように.transformをキャッシュする必要はありません。 – Fattie

+0

私は開始関数で行うことによって、私のキャラクターの開始位置を格納することができます:someVector3 = character.transform.position;右 ?そして、私はどのように私はこのインデックスをウェイポイントアレイに追加することができますか?0インデックスを置き換えるのではなく、配列内の2つのインデックスをプッシュするしたがって、someVector3はインデックス0になり、他の2つのインデックスはインデックス1と2にプッシュされます。 –

+0

@ TheLostLostit実際、それはあなたの位置を取得する方法です。動的な考え方も別の問題です。あなたが格納したいアイテムの動的な量を扱っているときは、配列の代わりにリストを使うべきです。プライベートリスト _positions;次に、そのような位置を追加することができます:_positions.Add(someVector3);これは、リストの最後にsomeVector3を追加することに注意してください。 InsertAtを使用して、別の場所にベクターを追加します。 –

関連する問題