c# - 我正在使用统一制作我的第一个 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安装
免费版
解决方案
为此,您应该有一个设置为触发的 2d 对撞机的玩家对象(选中检查器“IsTrigger”上的小框)。此外,死亡屏障可能应该标记该复选框。
推荐阅读
- angular - 失败的“tns 预览”ValidationError:无效的选项对象
- django-rest-framework - 如何使用 Serializer() 类 DRF 获取外键值
- python - 在非结构化数据中搜索文本
- c# - 为什么本地PC和服务器上的日期格式不同
- json - 如何将所有数据存储在 JSON 文件中,而不是 laravel 中的数据库以及该文件的路径
- flutter - 如何使用 in_app_update 更新应用程序
- xml - 如何避免将 xmlns 命名空间属性传递给 XSLT 中的子元素?
- buildbot - 如果 buildbot 失败,我如何重做一个步骤?
- angular - 如何在 Angular 9 中使用自定义验证器
- tomcat - 服务器重启时如何保持会话?