【问题标题】:how to make sprite fall straight down in unity2d (and not move from its column)?如何让精灵在unity2d中直接落下(而不是从它的列中移动)?
【发布时间】:2015-04-12 05:53:47
【问题描述】:

我怎样才能使精灵垂直下落,并抵抗任何横向运动,无论是通过拖动还是物理?

我的代码在运行时实例化了一个带有附加脚本的预制件。

脚本在一段时间后运行以下函数:

void addSliderJoint() {
    myVerticalSlider = gameObject.AddComponent<SliderJoint2D> () as SliderJoint2D;
    myVerticalSlider.angle = 90;
}

这个函数运行后,我希望精灵只能垂直移动,但它们似乎很乐意不受限制地移动。我可以在运行时在检查器中“看到” SliderJoint2D,如果我在 GUI 中更改它的设置,精灵会突然响应它。

可在https://github.com/thunderrabbit/finna-be-octo-wallhack 获取示例回购

【问题讨论】:

    标签: unity3d unity3d-2dtools


    【解决方案1】:

    我刚刚将此添加到您的 OnMouseDrag() 方法中

    // Set the Position
        Vector2 newPos = new Vector2(startPos.x, startPos.y + dir.y);
        transform.position = newPos;
    

    【讨论】:

    • 我不希望它们从一开始就被修复,但我可以解决这个问题。感谢您提供如此简单的解决方案!
    【解决方案2】:

    作为建议,如果您希望对象仅根据一个轴移动,您可以添加 Rigidbody(不是 Rigidbody2D),并在对象上设置 Constraints 以冻结位置除了你要翻译它的轴。

    【讨论】:

    • 是在运行时替换 Rigidbody2D 还是应该从一开始就使用 Rigidbody?
    • 我试过这个,但它使其他事情过于复杂,首先,我必须使用 3D 对撞机而不是 2D。如果我走这条路,我想我会将整个项目转换为 3D。
    • 好吧,我遇到了某种类似的问题,我只将我需要的对象切换到 3D,但是是的,这可能不是处理它的最佳方法,很高兴你解决了你的问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多