【发布时间】:2019-04-06 04:52:31
【问题描述】:
首先:我对编程完全陌生,这一定是一项简单的任务,所以我希望你能帮助我解决这个问题,同时我从你的近似中学习,这样也许我可以在我的初学者项目中解决未来的问题。
所以我试图让一个游戏对象在与另一个游戏对象发生碰撞时改变它的精灵。在代码中,您可以看到我使用公共属性制作了 CandleLit 和 CandleUnlit,因此我将相应的精灵拖到 Unity 的 Inspector 中各自的插槽中......这个想法是,当 CandleUnlit 对撞机用标签接触我的对象的对撞机时“Smallfire”它将 CandleUnlit 的精灵切换到 CandleLit 的精灵...我在控制台中没有错误,但发生碰撞时什么都没有发生,所以我知道这一定是一个非常愚蠢的问题,就我理解脚本的方式而言流...所以我希望有人可以帮助我找到我所缺少的或我做错了什么。在此先感谢我会在等待某人帮助的同时检查我的教程,因为我自己几个小时后无法弄清楚:(
public class CandleSpriteSwitch : MonoBehaviour
{
public Sprite CandleLit;
public Sprite CandleUnlit;
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "SmallFire")
{
gameObject.GetComponent<SpriteRenderer>().sprite = CandleLit;
}
else
{
gameObject.GetComponent<SpriteRenderer>().sprite = CandleUnlit;
}
}
}
【问题讨论】:
-
您是否尝试在
OnCollisionEnter中设置断点以查看是否输入过?您使用的是 2D 对撞机吗?如果是这样,请尝试改用OnCollisionEnter2D。 -
感谢您的回复。是的,我正在使用 2D 对撞机,但是当我添加 2D 时,整个“OnCollisionEnter2D”会改变颜色,所以我认为这不会按预期工作......所以告诉我 Alex 在这种情况下颜色的改变并不重要?或者我错过了一些让程序按预期解释该部分的东西?
-
感谢您的宝贵时间,我真的很感激 :) 顺便说一下,我不明白您对断点部分的意思 :( 抱歉
-
您还必须将
Collision参数转换为Collision2D。方法签名不同。 -
添加一些断点,让我们知道代码是否曾经进入 OnCollisionEnter2D 内的 if/else 流。