如何在Unity 3D中使用ontrigger传送或门户

时间:2013-07-30 03:02:00

标签: c# unity3d

我是C#的初学者,还在学习。 我只想知道为什么它根本不起作用。

void OnTriggerEnter(Collider Portal)
{
    Debug.Log ("waaa1111aa");
    if (Input.GetButtonDown("Jump") && Portal.tag == "Player")
    {
        Portal.transform.position = new Vector3(11.5781f, 9.681356f, 1.419181e-07f);    
    }
}

代码就像是我英雄的门户网站 如果我要删除输入代码确实它将工作
但那不是我打算做的有一种方式 当我打开门时,我将首先进入getbuttondown或getkeydown

2 个答案:

答案 0 :(得分:1)

此代码看起来会移动门户网站对象,而不是此代码所附加的对象。

void OnTriggerEnter(Collider Portal)
{
    Debug.Log ("teleporting");         
     {
         gameObject.transform.position = new Vector3(11.5781f, 9.681356f, 1.419181e-07f);    
      }
 }

如果将目标位置放在门户网站对象上的gameComponent上,那么它将是一个更强大的系统,因此您不必对目标进行硬编码。假设您的门户网站上有一个名为PortalComponent的组件,它有一个名为“Destination”的Vector3字段:

void OnTriggerEnter(Collider Portal)
{
    PortalComponent p = Portal.gameObject.GetComponent<PortalComponent>();

     if (p != null) {
     Debug.Log ("teleporting");         

         gameObject.transform.position = p.Destination;    
      }
 }

答案 1 :(得分:0)

您可以使用OnTriggerStay并测试那里的传送按钮。