c# - Unity 游戏中的物理(钟摆效应)

标签 c# unity3d game-engine game-physics game-development

所以,我真的不知道如何寻找我的问题的答案,我是一名自由职业者的游戏开发者,我的任务是做一个“钟摆平台”,这就是这个概念:

enter image description here

我尝试了很多不同的方法,比如在平台的两侧设置碰撞盒,当玩家进入碰撞盒时,平台会像钟摆一样移动。

但是,我总是遇到很多问题,当我设法解决所有问题时,运动感觉不自然。

这是我尝试过的方法之一:

public IEnumerator RotatesTowardsLeft()
{
    while (transform.parent.eulerAngles.z < 25 || transform.parent.eulerAngles.z >= 330)//25
    {
        transform.parent.eulerAngles += new Vector3(0, 0, speed);
        yield return new WaitForSeconds(0.01f);
    }
    currentDirection = Directions.Left;
}

public IEnumerator RotatesTowardsRight()
{
    while (transform.parent.eulerAngles.z > 335 || transform.parent.eulerAngles.z < 30)
    {
        transform.parent.eulerAngles += new Vector3(0, 0, -speed);
        yield return new WaitForSeconds(0.01f);
    }
    currentDirection = Directions.Right;
}

所以,如果有人能帮助我,那将意义重大,因为我觉得我已经没有选择了......

最佳答案

尝试使用物理对象,并附加一个 ConfigurableJoint到你的对象。 (如果你在 2D 中工作,请使用 DistanceJoint2D )然后你可以选择一个位置让关节附着在它上面,它应该给你你想要的效果而不需要一堆代码。请记住,如果您处于 3D 模式,将需要一些额外的工作来设置 ConfigurableJoint,例如限制一些轴和 Spring 力。

希望这对您有所帮助!

关于c# - Unity 游戏中的物理(钟摆效应),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55251134/

相关文章:

c# - Moq - 为构造函数注入(inject)对象创建模拟实例

c# - 有没有办法延迟 c# 中的 if 语句/方法

c# - OnMouseEnter 旋转变换

architecture - Valve 是如何在军团要塞 2 中构建他们的实时成就引擎的?

c# - 将应用程序最小化到系统托盘 - 没有图标出现

c# - OOP 和 C# 中密封抽象类的真正用途是什么?

c# - 结构变量不变

c# - 来自 url 的音频未完全播放

c# - XNA Game Studio 在 2013 年过时了吗?

flutter - Flutter:并非总是调用onTapDown函数