0

我正在为 Unity 中的“熔岩”块创建代码,一旦玩家触摸它,玩家就会重生。但我收到 3 个错误,我不明白问题出在哪里。错误:

  • Assets\KillScript.cs(14,45): 错误 CS1002: ; 预期的

  • Assets\KillScript.cs(13,31): 错误 CS1513: } 预期

  • Assets\KillScript.cs(13,31): 错误 CS1002: ; 预期这是代码(附加到播放器精灵的脚本);

     using System.Collections;
     using System.Collections.Generic;
     using UnityEngine;
    
     public class KillScript : MonoBehaviour
     {
         void OnCollisionEnter2D(Collision2D coll)
         {
             if (coll.gameObject.tag == "Lava")
             {
                 Destroy(gameObject);
             }
             if (gameObject)Destroy) {
                 current.transformation.position new vector3(-0.37, -0.13, 0);
             }
         }
     }
    
4

2 回答 2

1

对于您的 if 语句,我建议使用 bool 来检查您的玩家是否已死亡。此外,第 14 行在 Vector3 和 current.transformation.position 之间没有等号,并且 Vector3 没有大写。另一个问题是小数后面没有 f。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class KillScript : MonoBehaviour
{
    public bool isDead;

    void OnCollisionEnter2D(Collision2D coll)
    {
        if (coll.gameObject.tag == "Lava")
        {
            Destroy(gameObject);
            isDead = true;
        }
        if (isDead = true)
        {
            current.transformation.position = new Vector3(-0.37f, -0.13f, 0);
            isDead = false;
        }
    }
}

另外我不确定 current.transformation.position 是什么。您可以使用预制件创建克隆,然后将该位置设置为 Vector3。

于 2021-06-05T19:44:26.717 回答
0

让我们来看看...

  1. 如果我计算正确...... current.transformation 是什么?这可能是其中的一部分。但是您应该在问题中指出错误在哪一行,因此我们不必尝试全部计算。哦,也让我们来看看这行代码。current.transformation.. 那是什么?你的意思是变换?变换位置?那么您实际上需要使用等号,而不仅仅是 ...formation new vector3(... 最后,Vector3 应该大写。
  2. 再说一遍,什么是(gameObject)Destroy)???代码无法编译。那里有一个额外的支架。你到底想做什么?
  3. 同样,也许不要总是从表面上看错误,这可能只是它不理解你想要做什么。但是,我想我会尝试提供关于哪些代码可以工作的建议。

首先,看起来 (gameObject)Destroy 正在检查 GameObject 是否被销毁。看,问题是如果游戏对象被销毁,那么这个脚本也会被销毁......?而且我很确定 current.transformation.position 应该是 transform.position?而且你还需要等号,并且 Vector3 应该大写。

于 2021-06-07T13:26:14.320 回答