首页 > 解决方案 > 我正在使用统一制作我的第一个 2d 游戏(我是菜鸟),我试图制作一个死亡屏障,将角色传送回开始

问题描述

(只是让你知道,我是一个菜鸟,所以如果你认识到它可能来自教程的一些代码,因为我不知道 C#,只知道类似于 arduino 和 java 的部分;一些代码来自教程已编辑,因此我无法通过查看它们进行故障排除;我浏览过网络)

此外,它使用了来自资产商店的 Sunnyland 和免费平台资产包,因为我不是艺术家

所以,我试图为教程关卡(在撰写本文时这是平台游戏中唯一的关卡)设置死亡屏障,但它并没有真正起作用,所以我调整了代码,直到我得到这个:

public Transform respawnArea;
public GameObject player;

void OnTriggerEnter2D(Collider2D other) {
    Debug.Log("the player has died"); //this is how i noticed the problem
    player.transform.position = respawnArea.transform.position;
}

在那之后,我对其进行了测试,然后它似乎不起作用,但随后一些进一步的测试证明精灵正在越过障碍物,但碰撞正在传送到应该去的地方。我用调试器对其进行了测试,当玩家摔倒时报告它进行调试,但随后我尝试向左走(进入墙壁)并观察调试并没有发生任何事情但是当我跳过墙壁时,不可见的碰撞箱又掉回了死亡屏障,它给了我另一个调试。奇怪的是,当我暂停时,精灵出现在它应该在的位置,当我恢复时,它又消失了。(再次,我是一个统一和 C# 菜鸟,所以这可能是正常的,与问题无关)

Unity版本:2019.4.0f1
Unity hub安装
免费版

标签: c#unity3dvisual-studio-code

解决方案


为此,您应该有一个设置为触发的 2d 对撞机的玩家对象(选中检查器“IsTrigger”上的小框)。此外,死亡屏障可能应该标记该复选框。


推荐阅读