2017-08-25 4 views
0

OnTriggerStay(Collider other)(ラダースクリプトで)関数を使用して、プレイヤーがはしごに登ることができるようにしています。関数を呼び出す方法を知りたい)を衝突したオブジェクトから削除します。colliderオブジェクトから変数または呼び出し関数を取得する方法

私は以下の解決策を試してみましたが、この文脈ではUnityは私にはそれが有効ではないと私に伝えています。誰かが解決策を提案できますか?

myObject.GetComponent<MyScript>().MyFunction(); //wrong 

機能

void OnTriggerStay(Collider other) //Runs once per collider that is touching the player every frame 
{ 

    if (other.CompareTag ("Player")) { //A player is touching the ladder 

     //I want to get the isGrounded variable or getIsGrounded() function from other's playerScript.  

     if (Input.GetAxis ("Vertical") < 0) { // Player should go down 
      other.transform.Translate (0, -.1f, 0); 
     } 
     else if (Input.GetAxis("Vertical") > 0) //Player should go up 
       other.transform.Translate(0,.1f,0); 
    } 

} 

答えて

1

は私が接地されている変数または の他playerScriptからgetIsGrounded()関数を取得したいです。

OnTriggerStayファンクションのパラメータCollider otherにこの情報が含まれています。あるべき

other.GetComponent<MyScript>().getIsGrounded

void OnTriggerStay(Collider other) //Runs once per collider that is touching the player every frame 
{ 

    if (other.CompareTag("Player")) 
    { //A player is touching the ladder 

     //I want to get the isGrounded variable or getIsGrounded() function from other's playerScript.  
     if(other.GetComponent<MyScript>().getIsGrounded) 
     { 

     } 

     if (Input.GetAxis("Vertical") < 0) 
     { // Player should go down 
      other.transform.Translate(0, -.1f, 0); 
     } 
     else if (Input.GetAxis("Vertical") > 0) //Player should go up 
      other.transform.Translate(0, .1f, 0); 
    } 

} 

(注)OnTriggerStayは、フレームごとに呼び出されるようにしたい場合は、私があなたの代わりにOnTriggerStayのこれを達成するためにOnTriggerEnterOnTriggerExitの組み合わせを使用することをお勧めすることを。完全な例のthis投稿を参照してください。

+0

それはうまくいきますが、私は自分のはしごが完全に昇降するまで私のプレーヤーを人質にして欲しいです。もし私がはしごを降りようとしていると、私はそれを後方に歩いているので、私ははしごを落ちて本当に速く落ちるので、登山中にスクリプトを無効にしようとしていた!isGrounded。 –

+0

現在の問題は、元の質問とは関係ありません。その問題の新しい質問を作成してください。 – Programmer

関連する問題