2016-05-19 3 views
0

このスクリプトでカメラ位置を変更しようとしていますが、エラーが発生しましたAssets/Scripts/ChangeView.cs(15,35) :エラーCS0120:非スタティックメンバ `UnityEngine.Transform.position 'にアクセスするためにオブジェクト参照が必要です非スタティックメンバ `UnityEngine.Transform.position 'にアクセスするにはオブジェクトリファレンスが必要

私はユニティとC#を初めて使用しています。

using UnityEngine; 
using System.Collections; 

public class ChangeView : MonoBehaviour { 

    private bool view; 
    private Transform trans; 
    void Start() { 
     view = true; 
     trans = GetComponent<Transform>(); 
    } 
    public void ChangeCamera() { 
     if (view == true) { 
      view = false; 
      Transform.position = new Vector3 (0.0f, 5f, -5f); 
     } 
     else { 
      view = true; 
      Transform.position = new Vector3 (0.0f, 1f, -1f); 
     } 
    } 
} 
+1

おそらくその変数_trans_を使用したいと思っています。もちろん、それを初期化する必要があります。 – Steve

+0

@SteveこれはUnityのコンストラクタのような 'Start'で初期化されます。 –

答えて

0

実際のクラスのTransformは使用しないでください。 =新しいのVector3()

問題は、あなたがあるので、あなたが

trans.position = Vector3.MoveTowards()または trans.positionが必要

を(私はあなたがインスペクタでこれを割り当てていると仮定しています) Transformを静的なクラスのように扱うためにtrringしていますが、ロジック内でtransを全く参照していません。

編集:また、インスペクタから変数を割り当てることができる場合は、GetComponentを使用するよりも行う方がよいでしょう。あなたのケースでは、そのはmonobehaviourから継承するので、あなたはすでに、次の

gameObject.transform.position

か、単に

にする必要はありません位置

を変換によって変換するためのアクセス権を持っています他のオブジェクトが変換しない限り、Transformのプライベート変数。