问题标签 [rigid-bodies]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
33521 浏览

c# - 如何防止刚体穿过其他对撞机

我有一个硬币RigidBody和周围的墙壁和盒子对撞机。出于试用目的,我已将以下代码应用于硬币。

但是,有时硬币会穿过墙壁,但是当我将速度从 30 点增加到 50 点时,它会在第一次点击时穿过墙壁。我用谷歌搜索了很多东西,除了 DontGoThroughThings 脚本对我不起作用或者我真的不知道如何使用它之外,仍然一无所获。

我一直在硬币上添加连续动态,在墙上添加连续碰撞检测,但仍然不起作用。

0 投票
1 回答
718 浏览

markers - 在 Motionbuilder 2014 中附加刚体

我有一些从 MotionBuilder 中的 C3D 文件导入的最佳标记数据。此标记数据表示角色两英尺的动画。有没有办法将刚体附加到这些标记并将刚体的动画导出到 fbx 文件?

澄清一下,我只有脚的标记数据,而不是整个角色。

非常感谢 !

干杯,黑暗Z

0 投票
1 回答
552 浏览

unity3d - Unity3D - Prevent RigidBody properties from changing dynamically at runtime

I'm very new to Unity, and I'm just playing around with a dice rolling simulation. I have a single cube with a rigid body and the StandardAssets DragRigidbody script associated with it. When I run the preview, I can drag the cube around just fine, and if I fling the cube it flies off in that direction and rolls around just like I would expect it too.

A problem occurs when I duplicate the cube and run the preview. Both cubes can still be dragged around, but they cannot be flung. If I try to fling either of them, the moment I let go of the mouse button the cube stops moving completely. If it happens to be in the air at the time, then it floats back down very, very slowly as if there is almost no gravity.

I actually do know what's causing this behavior, but I don't know why it's happening. These are the Rigidbody properties for the cube(s) before I run the preview (the values that I want):

Mass: 1
Drag: 0.5
Angular Drag: 0.5
// The rest are defaults

...but when I run the preview with more than one cube, I can see the values change as soon as I drag a cube to these:

Mass: 1
Drag: 10
Angular Drag: 5

So this is what's causing the loss of fling functionality. The values don't change with only one cube, so why do they change with multiple cubes?

0 投票
1 回答
936 浏览

java - 2D 多边形碰撞响应和刚体运动

所以我已经意识到我正在尝试解决一个我可能做也可能做不到的巨大游戏障碍,但我已经阅读了所有我可以做的 2D 碰撞响应,这个 pdf 文件是我最有益的东西找到。我把公式记下来了,我只是缺乏对数学的概念理解,不知道这个讨厌的大公式在代码中应该如何看待。

碰撞检测不是问题,我已经为此设计了一个系统,它工作正常。当多边形与墙壁(在本例中为 JFrame 窗口的一侧)碰撞时,我无法确定 handleCollision() 方法需要哪些参数。

我已经将我的凹“宇宙飞船”多边形设置为单个凸多边形的组合,并且我目前已经制定了工作方法来获取每个多边形的面积(由 Module 类表示)以及质心。小凸多边形的组合由 Vessel 类表示,我还可以通过平均其模块的质心和面积来从中获得质心。

JPanel 类:

船舶类别:

和模块类:

如果您花时间分析我的情况 - 谢谢!希望你有办法解决这个困境。

0 投票
0 回答
8231 浏览

c# - Unity3d OnTriggerEnter2D没有触发

我目前正在尝试制作 Unity3d(在这种情况下为 2D)平台游戏技术演示。在进行演示时,我遇到了一些障碍,因为我希望我的 Player 对象能够上坡,但是如果我在 Player 对象在地面上时应用重力,它将无法上坡,即使它可以让他们失望。我的解决方案是在 PLayer 对象接触地面时关闭重力,并在没有时将其重新打开。我通过使用功能void OnCollisionEnter2D(Collision2D collision)关闭重力并void OnCollisionExit2D(Collision2D collision)重新打开它来做到这一点。

这不起作用,所以我玩了一下,并想到了给地面和玩家对象“触发框”的想法,这些对象是看不见的子立方体对象,有一个标记为触发器的碰撞器。所以现在我正在使用这个功能void OnTriggerEnter2D(Collider2D collision)来关闭重力,然后void OnTriggerExit2D(Collider2D collision)重新打开它。但这也行不通。下面是我的代码,首先是 Player 对象的主脚本,然后是 Player 对象的“TriggerBox”,然后是显示我的对象如何在 Unity 中设置的图像。

结果:Player 类当前没有与地面发生碰撞,而是从地面坠落到无穷远处。

我想要的是:玩家与地面发生碰撞,玩家的 TriggerBox 与地面的“TriggerBox”发生碰撞并关闭玩家的重力。

笔记:我尝试过给玩家和地面 RigidBody2Ds。玩家与地面发生碰撞并抖动,并不会触发重力关闭,当地面有 RigidBody2D 时,地面会与玩家接触。目前尚不清楚是什么触发的,因为地面正好落在玩家的下方。

接下来是 TriggerBox:

-至于我的设置图像-

玩家的设置:在此处输入图像描述 玩家的 TriggerBox 设置:在此处输入图像描述 地面的设置:在此处输入图像描述 地面的 TriggerBox 设置:在此处输入图像描述

感谢您抽出宝贵的时间阅读本文,并希望对您有所帮助。

0 投票
2 回答
7512 浏览

c# - RigidBody2D 冻结 X 位置

我想知道是否有一种方法可以使用 Unity 的 RigidBody2D 来模拟以下代码行,而不是使用普通的 RigidBody。

我希望我的球员 x 位置在与某物碰撞时冻结。虽然我可以使用上述方法,但它需要我重新处理所有 2D 碰撞以处理 3D 碰撞。我宁愿避免的痛苦。

0 投票
2 回答
2762 浏览

c# - 重力在统一 RigidBody 2D 变换中不起作用

我制作了精灵并应用了刚体 2d 组件,它工作正常,现在我写了这段代码,但是,当我开始玩游戏时,它工作了一段时间,但在那之后,重力似乎为空,意味着我的刚体当我离开钥匙时不下来

// Update is called once per frame void Update () { if (Input.GetKey (KeyCode.LeftArrow)) { posX--; } else if (Input.GetKey (KeyCode.RightArrow)) { posX++; } if (Input.GetKey (KeyCode.UpArrow)) { posY++;
} else if (Input.GetKey (KeyCode.DownArrow)) { posY--; } angle -= Input.GetAxis ("Horizontal"); angle = Mathf.Clamp (angle, -10, 10); } void FixedUpdate() { transform.eulerAngles = new Vector3 (0,0,angle); transform.position = new Vector2 (posX * Time.deltaTime, posY * Time.deltaTime); } }
我想要做的是上下左右移动直升机(用户可以控制)但是当用户不交互时,我希望重力作为默认工作并且直升机会由于重力而下降,如何实现?在此处输入图像描述

0 投票
1 回答
42 浏览

c# - 刚体方法名称预期?

我对此真的很陌生,但我不断收到方法名称预期的错误。

公共浮动速度;

我不知道是不是我刚刚弄乱了括号,或者我只是不允许这样做。

0 投票
3 回答
4752 浏览

c# - Bullet 预制脚本

我在这个脚本中遇到错误?

UnityEngine 不包含刚体的定义(行:22,24)

0 投票
1 回答
5427 浏览

c# - 平滑地处理刚体

当玩家点击屏幕左侧时,我希望我的玩家向左移动。现在,我的播放器只在我按住鼠标按钮时移动。我真正想要的是让他不断向左移动,直到我按下一次屏幕时他达到目标位置。

有人可以告诉我我的代码中缺少什么以允许这种情况发生吗?

我的方法是在 FixedUpdate 中,因为我正在移动玩家刚体而不是平移实际玩家。