【问题标题】:How to Draw a Ray Along a Sprite in Unity如何在 Unity 中沿着 Sprite 绘制射线
【发布时间】:2014-06-11 22:27:41
【问题描述】:

我正在尝试沿着 Unity 中的精灵投射光线。我已经创建了一个空的游戏对象,并将其作为角色的头部、手部、胸部等不同纹理的父级,以便轻松地对其进行动画处理,现在对于近战战斗,我想在手部纹理上投射光线,同时为攻击设置动画但是我无法在场景中获得手部纹理的中心。 我正在尝试通过以下代码访问 Sprite

Sprite Hand = gameObject.GetComponentsInChildren <Transform> () [4].GetComponentsInChildren <Transform> () [0].gameObject.GetComponent <SpriteRenderer> ().sprite;

此代码用于访问我通过从变换中心绘制射线验证的手部变换

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    与其试图在运行时找到它,不如在 prefab/gameobject 中将它链接在一起。在检查器中公开它然后将精灵拖到公开的变量中非常简单。您可以使用精灵或变换,在下面的示例中,我使用了变换,但如果您需要从中获取更多数据,请继续使用精灵。

    public Transform Head;
    public Transform Hand;
    public Transform Chest;
    

    然后就可以通过Head.position得到位置了

    如果您要检查碰撞,请考虑在每个位置放置一个碰撞器,然后您可以在需要时打开/关闭它们(因此手碰撞器被禁用,除非角色正在出拳,然后您将其打开出拳的持续时间(或部分时间)。)然后您可以在该对撞机上安装一个组件,用于造成伤害或寻找墙壁或您想要完成的任何事情。

    【讨论】:

    • 感谢您的回答我会试试看
    • 启用对撞机工作正常,但我如何识别公共变换手上的碰撞@Formic
    • 你不会的。而是在与碰撞器的变换上有一个组件。这有助于保持行为隔离,这很棒。该组件将管理所需的行为。如果你真的想在类中拥有启用/禁用碰撞器的代码,那么只需构建一个将消息广播回其所有者的组件。因此,在作为所有者的组件中公开一个游戏对象,然后您可以使用发送消息来引发事件并将数据传递给所有者(docs.unity3d.com/ScriptReference/GameObject.SendMessage.html
    • 如果我想知道运行时Textute的位置@Formic
    • 感谢@Formic 的建议
    猜你喜欢
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    • 1970-01-01
    • 2023-03-05
    • 2020-06-24
    • 2020-10-17
    相关资源
    最近更新 更多