0

我是 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

4

2 回答 2

2

此代码看起来像是要移动门户对象,而不是此代码所附加到的对象。

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

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

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

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

         gameObject.transform.position = p.Destination;    
      }
 }
于 2013-07-30T03:29:52.727 回答
0

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

于 2013-07-30T03:36:27.693 回答