【问题标题】:What is the best way to go about this [closed]解决这个问题的最佳方法是什么[关闭]
【发布时间】:2021-03-28 23:24:38
【问题描述】:

所以,一个小背景故事。我一直在研究 cel shaded 3d rpg 一段时间了。它将具有在基于动作和基于回合之间切换的选项。不过那是以后的事了。

我的问题是我想添加一种方法来在剑与敌人碰撞时对其造成伤害。我知道 onCollisionEnter 是一种方法,我也知道光线投射是一种不同但更复杂的方法。 我希望每次挥剑都能对敌人造成伤害(现在是史莱姆,以后有更多的敌人。)而不是立即死亡。我之前尝试过 onCollisionEnter ,但无法让它逐渐减少。 只是,嗯...瞬间死亡

我使用的onCollisionEnter是带有comparetag函数的。

知道我在 unity 2019.4.X 上可能也很重要

我曾尝试使用 unity 2020.x,但它对我的 PC 来说太费力了,因为每次我做某事时都会出现应用程序加载问题,这很烦人。

【问题讨论】:

    标签: c# visual-studio unity3d game-development


    【解决方案1】:

    如果您不掷剑,Raycasts 不适合您。您使用了正确的方式(碰撞),但您错过了一点:

    • 发生碰撞时不会发生这种情况。很多碰撞是连续发生的。

    为避免这种情况,您可以在发生碰撞时关闭其中一个碰撞器。 (也就是说:如果敌人有100血,而我们每次击打减少20血,那么连续发生5次以上的碰撞。因此,我们是一举杀死敌人。)

    或者您可以使用布尔值(例如swordSwingCollisionActive)。如果在挥剑后发生碰撞,则将此布尔值设置为true。挥剑结束后,你再去false。只需在OnCollisionEnter开头写if (swordSwingCollisionActive) return;即可。

    【讨论】:

    • 谢谢,伙计!如果出现问题,我会尝试并回复您。当史莱姆看到玩家进入战斗模式时,Raycasts 会不会有好处?我有 2 个单独的级别 UI。一种用于普通模式,当您只是在探索时,另一种用于带有动作菜单的战斗模式。
    • 如果想通过距离探测敌人,可以使用Physics.OverlapSphere。您可以使用光线投射来确定目标是否在某个方向上。您可以将 Raycast 视为纤细的光束。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    相关资源
    最近更新 更多