如果我有一个以上的预制件,我怎样才能用门和钥匙制作一个预制件,只需打开它被拖入的门而不是其他门。
因此,除了我用作示例的门,我还有与其他对象交互的键。水,岩石,葡萄藤是"门"。
public List<GameObject> rockList = new List<GameObject>();
// Use this for initialization
private void Start()
{
anim = GetComponent<Animator>();
isMounted = false;
water = GameObject.Find("water");
freezeWaterKey = GameObject.Find("freezeWaterKey");
moveRockKey = GameObject.Find("moveRockKey");
rock = GameObject.Find("rock");
waterBoundary = GameObject.Find("golemBoundary");
moveRockKey = GameObject.Find("moveRockKey");
vine = GameObject.Find("Vines");
vineKey = GameObject.Find("key_vine");
}
private void OnTriggerStay(Collider other)
{
if (Input.GetKeyDown(KeyCode.E) && (other.tag == "Golem") && (isMounted == false))
{
isMounted = true;
//Change the Name of instantiated Clone
GameObject mountedGolemClone =
Instantiate(mountedGolem, golem.transform.position, golem.transform.rotation) as GameObject;
mountedGolemClone.name = "mountedGolem";
Destroy(mage);
Destroy(golem);
}
if (Input.GetKeyDown(KeyCode.C) && !freezeWaterKey && (other.tag == "waterTrigger"))
{
Renderer rend = water.GetComponent<Renderer>();
rend.material = frozenWaterMaterial;
Destroy(waterBoundary);
}
if (Input.GetKeyDown(KeyCode.C) && !moveRockKey && (other.tag == "rockTrigger"))
{
rb.AddForce(transform.right*-1*rockThrust);
Debug.Log("force");
}
if (Input.GetKeyDown(KeyCode.C) && !vineKey && (other.tag == "vineTrigger"))
{
Destroy(vine);
}
}
答案 0 :(得分:0)
您可以在两个对象上放置不同的脚本,即A&#34; Key&#34;钥匙上的脚本和&#34;门&#34;门上的脚本。
现在,在这两个脚本中都会提供一个公共变量,例如&#34; keyNo&#34;和&#34; doorNo&#34;。
在屏幕中拖动预制件后,您可以将这些变量的值设置为对于一对门和一把钥匙相同。
然后,在您的脚本中,检查keyNo是否等于doorNo。如果是,请解锁。