2017-12-22 15 views
0
using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class DroidMove : MonoBehaviour 
{ 
    public GameObject droid; 

    private void Start() 
    { 
     droid.SetActive(false); 
    } 

    private void Update() 
    { 
     if (Input.GetKeyDown(KeyCode.D)) 
     { 
      droid.transform.position = droid.transform.position - transform.forward; 
      droid.SetActive(true); 
     } 
    } 
} 

DをクリックするとDroidが表示され、カメラ(変形)を動かすとドロイドがカメラをたどります。Input.GetKeyDownを1つに切り替えるにはどうすればよいですか?

Dをもう一度クリックするとドロイドがfalseに設定されるので、DをクリックするたびにSetActive falseとtrueが切り替わります。

+1

droid.SetActive(!droid.active); – Greg

答えて

1

オブジェクトを切り替えるには、このようなものを使用する必要があります。擬似

if (Input.GetKeyDown(KeyCode.D)) 
     { 

      droid.enabled = !droid.enabled; 
     } 

これは、これは一度だけ(1フレーム)が動作するのKeyDown

droid.transform.position = droid.transform.position - transform.forward; 

でD.

あなたのゲームオブジェクトを切り替えるにはボタンを押すごとに、できるようになります。だからあなたのgameObjectがあなたのカメラに従うためにアクティブであるかどうかをブールまたはチェックを使うことができます。更新では以下を使用できます

if (droid.activeInHierarchy == true) // or you can use a bool here 
     { 
      droid.transform.position = droid.transform.position - transform.forward; 

     } 

乾杯!

+0

私がしているときdroid.transform.position = droid.transform.position - transform.forward;ドロイドが再びアクティブになるたびにDを何度も押すとドロイドがプレイヤーに近づきます。そして私は同じ元の距離を保ちたい。ドロイドはカメラの動きに追従していません。私は、変換がFirstPersonCharacterであり、FirstPersonCharacterに接続されているカメラの周りを移動するときに、ドロイドがカメラの動きに従うことを望むことを忘れていました。 –

+0

あなたはFirstPersonCharacterの方向(transform.forward)の反対側でドロイドを動かすようです。それをカメラの位置に移動するには、ベクターに沿ってドロイドからカメラに移動する必要があります(droid.transform.position-transform.position)。ちなみに、Unityの[Navigation](https:// unity3d.com/de/learn/tutorials/topics/navigation/navigation-overview?playlist=17105)、あなたのニーズをすでにカバーしているかもしれません。 – Lelefant

関連する問題