【问题标题】:Unity 2D: How would I go about making a block that shoots when the player touches it?Unity 2D:我将如何制作一个在玩家触摸它时会发射的方块?
【发布时间】:2015-04-19 00:07:49
【问题描述】:

我正在 Unity 中制作 2D 平台游戏,我想制作一个与 shooting blocks from Kid Chameleon 非常相似的块。当它们被玩家触摸时,它们会从标记所在的每个方向射击,子弹会伤害玩家和敌人,摧毁箱子并激活其他射击方块。有人能告诉我如何实现这一目标,因为我不知道从哪里开始吗?

【问题讨论】:

    标签: unity3d unityscript


    【解决方案1】:

    首先,您可以使用OnMouseDown() 事件来检测对象上的点击(或触摸),然后您可以从块中实例化一个子弹对象,并为其刚体提供移动速度。并且您可以为每个想要检测碰撞并完成工作的游戏对象使用OnCollisionEnter2D(Collision2D c) 事件。

    【讨论】:

    • 感谢您的回复。我已经按照您所说的内容进行了一些教程,并且我已经设法让弹丸从块的底部掉出。知道我怎样才能让它从侧面发射吗?
    • 没关系,我使用了不同的技术。相反,我制作了一个空的游戏对象并将子弹作为其子对象。当玩家触摸动画师的方块时,子弹会使其向右飞行。因为每个块只需要触发一次,它就可以工作。但是,当块被其他对象触摸时,我在激活块时遇到了一些问题。我已经给所有我想激活它的对象一个 ShootBlockAct 的标签,我已经把它添加到我的脚本中'if(Other.gameObject.tag == "Player" | Other.gameObject.tag == "ShootBlockAct") '(等等,字符数限制)
    • 但是,子弹不会激活其他方块。一些让它们开火的方法,例如在它们上面推一个块,但子弹不起作用。知道我做错了什么吗?
    • 您可以给项目符号一个标签,例如bullet_tag,并在任何块OnCollisionEnter2D(Collision2D c) 事件中检查与if(c.gameObject.tag == "bullet_tag") 语句的冲突并做任何你想做的事情
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多