Articles of 扭矩

运动方程式脚本失败

我添加了运动方程到我的代码,现在没有任何工作。 我得到的错误rigidbody.torque分配尝试'敌人'是无效的。 input转矩为{0.000000,NaN,0.000000}。 UnityEngine.Rigidbody:AddTorque(Vector3)EnemyBehavour:FixedUpdate()(在Assets / _Scripts / Baddies / EnemyBehavour.cs:61) 我应该没问题,请帮忙。 //speed of enemy public float speed = .5f; //base distance enemy will attack player public float range = 3f; //how far back enemy will stand public float stopDistance; //what the enemy will pursue private GameObject target; //targetable Enemies private GameObject[] targetable; //itself private Rigidbody […]

使用数据块时崩溃

我真的彻底search了networking,找不到任何解决scheme,所以我在这里寻求帮助。 无论如何,我有这个datablocks.cs中的数据块: datablock t2dSceneObjectDatablock(EnemyShipConfig) { canSaveDynamicFields = "1"; Layer = "3"; size = "64 64"; CollisionActiveSend = "1"; CollisionActiveReceive = "1"; CollisionCallback = true; CollisionLayers = "3"; CollisionDetectionMode = "POLYGON"; CollisionPolyList = "0.00 -0.791 0.756 0.751 -0.746 0.732"; UsesPhysics = "0"; Rotation = "-90"; WorldLimitMode = "KILL"; WorldLimitMax = "880 360"; WorldLimitMin = "-765 -436"; […]

如何将特定的扭矩应用于Unity中的可configuration关节

我有一个扭矩向量,需要应用于连接两个刚体的可configuration关节。 这个关节configuration成这样,它只允许围绕所有3个轴的角运动。 有没有办法将扭矩vector应用到可configuration的接头上? PS:我使用embeddedUnity的PhysX引擎,所以我不能直接访问D6关节,而只能通过“可configuration关节”包装。 它由于某种原因将Y和Z驱动器组合成一个“YZ驱动器”,而我无法独立指定Y和Z轴的扭矩。

从HeroEngine转到Unity / Torque 3D

简短的背景:投资者有一些财务支持的小型团队,但没有数十亿美元的企业,正在为个人电脑开发MMORPG。 HeroEngine看起来是完美的解决scheme。 所有这些都需要开始,编程语言也包括C ++ / C#。 听起来很完美。 但是,一旦这笔钱滚滚而来,公司可能更喜欢自己的工作,包括自己的服务器公园等。 有没有人有使用HeroEngine的经验? 是否有可能将项目从Unity / Torque 3D或类似的项目? 是否有法律限制(我查看了许可证协议,却无法find答案)? 他们是否应该在HeroEngine和迁移之后开始呢,还是从一开始就select像Unity / Torque 3D这样的引擎更聪明?

如何使用addtorque计数旋转或旋转?

我有一个刚体,并使用4个键在4个不同的方向添加: W沿着X轴正向增加扭矩(向前俯仰) S沿着X轴向负方向增加扭矩(后退) A沿Y轴负向增加扭矩(向左偏航) D沿Y轴正向增加扭矩(向右偏航) 刚体可以围绕这些方向的任意组合旋转/旋转,但是我的问题是如何计算它在任何给定轴上的旋转次数? 例如。 如果玩家已经完成了360转左右的旋转,我想显示“2 Left Spins”等 我已经尝试存储每个轴的eulerangles,但这是不好的,因为它在一定的程度后重置。 我认为它的工作方式是在keydown重置一个度量计数器,而关键是被保留,我可以继续存储该轴的旋转变化,然后在keyup上,我可以将这个总数除以360。不知道如何在C#中做到这一点,或者如果这是最好的方式来做到这一点。 我怎么能这样做?

游戏物理:使用分离轴定理计算碰撞响应?

我正在执行一个项目,在这个项目中我已经实现了分离轴定理来检测物体之间的碰撞。 我当前的碰撞响应是一个对象,包含它是否重叠以及最小平移向量(MTV)是什么。 然后,我把MTV,并将其添加到我们正在testing的对象的线速度。 这一切工作正常。 但是,我想基于碰撞向对象添加旋转力。 为此,我想我们需要两件事情: 代表力量的最小翻译vector 一个接触点,这是MTV力被施加到物体的点 不过,我一直在努力计算过去两三天的接触点。 不幸的是,我一直无法find好的资源。 我如何计算一个合适的碰撞响应,如我所描述的? 非常感谢你!

c ++如何使用由惯性和力(力矩)导出的角速度为3d

我对游戏开发比较陌生。 我的术语和描述可能不合适。 请原谅我可怜的措辞,并帮助我提出如何更好地质疑这个问题似乎不太合适的建议。 我真的很感谢你的努力。 你好。 我很难解释我所拥有的价值观。 我有惯性和力量(扭矩)在xy z方面。 仅供参考我用x和y坐标作为我的地面,平面坐标和z作为我的上/下。 我假设,因为f = ma,角加速度必须是a = f / m。 所以我通过惯性来分配我的扭矩。 然后我将这些xyz值添加到我的角速度variables的xy z。 然而这些xyz值混淆了我。 为了施加旋转,我不需要角度/秒或弧度/秒的数值吗? 我所看到的xyz值似乎没有提到任何有关弧度或角运动的内容。 问题:如果我有(1,2,3)或任何(x,y,z)作为我的角速度,我怎么实际上应用它作为角运动? 仅供参考在这里我粘贴我的代码: float mass = 100; float devidedMass = 1.0/12 * mass; Vec3 innertia( devidedMass* (_box._size.z*_box._size.z + _box._size.x*_box._size.x), devidedMass* (_box._size.y*_box._size.y + _box._size.x*_box._size.x), devidedMass* (_box._size.y*_box._size.y + _box._size.z*_box._size.z )); box._angAccel += forceAng/innertia; box._angVelo += box._angAccel; […]

如何模拟汽车传动系统(在Unity中)?

我的一个爱好项目涉及汽车。 到目前为止,我有一个快速和肮脏的“一级”实施发动机+变速箱+车轮,但我认为这是丑陋的,我想要更现实一点。 可悲的是,我无法在Google上find很多(无论是错误的search条件,或者真的没有什么是我想要的)。 这好像是 在场景中设置:四个wheelcolliders附加到一个大boxcollider。 我想在系统中的东西: 发动机,离合器,变速箱,差速器和车轮(以及其他任何有扭矩的东西)的单独课程。 Throttlecontrol与revlimiter(工作!),转向(工作太!),刹车(尚未制造,但也不是很复杂,可能会工作)。 我试过的第一件事: 主要是围绕着如何告诉发动机车轮实际上正在使用或给(发动机制动)动力给系统旋转。 所以首先我创建了所有的类都有自己的updatemethod (不是直接由mainloop调用,而是从controllerclass的fixedupdate中调用)。 发动机更新方法根据节气门,扭矩曲线(animation曲线)和发动机摩擦来计算发动机扭矩。 然后用于加速具有自身惯性的虚拟曲轴。 但在加速前,我决定在发动机扭矩上加一些反馈扭矩,所以如果车轮不能跟上,发动机就不能加速,甚至减速。 这样的反馈扭矩例如由齿轮箱增加,齿轮箱又具有来自差速器和车轮的反馈力。 车轮计算出转速达到从变速箱出来的轴的转速所需的转矩,然后通过几次更新将其全部传回发动机。 问题在于,扭矩反馈并没有真正做到发动机制动,而是瞬间将其转化为几百万RPM。 反馈扭矩除以1000确实有效,但是汽车根本没有动作。 所以这是第一个失败。 失败数字2: 好吧,把这个拧紧,我想,整理所有的东西。 这不再使用几个updatemethod ,而是recursion更新。 基本上,我把引擎更新,然后计算出它有多less扭矩。 这就告诉变速器它在r RPM时有扭矩。 变速箱根据当前档位改变数值,然后再将这些数值放入差速器中。 差速器应该在其输出之间分配扭矩。 要做到这一点,我计算输出(在这种情况下,车轮)需要加速到r RPM多less扭矩。 我为每个输出做这个,并为每个输出做一个列表。 我也保存这些值的总和。 有了这个,我可以得到每个输出的值为0…1 ,这决定了每个输出在更新方法中有多less扭矩。 它基本上是一个智能差速器,给出需要更多扭矩,更多扭矩的输出。 我想建模一个真正的差异会涉及一些更复杂的东西。 现在扭矩在车轮上,并被放入车轮扭矩传感器的扭矩特性中。 直到这里它的工作。 如果我加油,然后放开它的车轮开始倒退。 这基本上就像第一次尝试一样。 所以也失败了 而失败3: 而不是返回剩下的扭矩,而是试着将RPM反向传播给发动机。 所以我施加扭矩,并得到RPMs回来。 但是,再一次,所有的事情都试图将汽车转向我想要的方向。 这是我的想法。 我想要一个相对现实的传动系统,这是模块化的,可以做引擎制动。 购买资产很可能不会解决我的问题,我也想了解它是如何工作的,而不仅仅是使用它。 有没有人有如何正确建模传动系统的经验? 如果我忘记提及某事,请询问。

角加速度在基础物理模型中的应用

我试图用一个基本的物理系统来创建一个街机飞行模型。 到目前为止,我已经设法使飞机前进,施加重力等。但是,在试图实现扭矩之后,我注意到在飞行模型中有一些有趣的行为。 当转过一会儿时,控制器显示为反转,有时,不同运动(俯仰,滚转,偏航)的控制器似乎也改变了。 我希望有人能够告诉我接下来要检查什么。 我已经包含了我的源代码,以防有人发现任何明显的错误! 我列出了一些下面的variables来显示它们的数据types: Quaternion rotation = Quaternion.Identity; Quaternion newRotation = Quaternion.Identity; Vector3 rotationChange = Vector3.Zero; Vector3 rotVec = Vector3.Zero; 以下是旋转力的更新逻辑: dt = (float)gameTime.ElapsedGameTime.TotalSeconds; if (dt > 1.0f / 60.0f) { dt = 1.0f / 60.0f; } Vector3 newRotationChange = rotationChange + dt * angularAcceleration; Vector3 newRotVec = rotVec + dt * newRotationChange; […]

二维物理:当质量中心发生变化时,扭矩会发生什么变化?

新手程序员和简单的2D物理资源管理器,在这里。 我有一个简单的2D对象,由两个刚体在一个固定的关节连接而成。 两个刚性物体可以围绕该固定关节自由旋转,导致整个物体的质量中心和惯性矩发生变化(但不会为系统增加额外的能量)。 如果我的二维物体围绕它的质心旋转,然后质心改变(因为它的一个部件旋转),扭矩会发生什么? 由于我的扭矩是在最初的质心处施加的,现在质心已经改变了,看来我不能为了新的目标方向而保存扭矩了吗? 我的头脑中有一种可能性是,一些初始扭矩将被转换为线速度,但是我无法以任何一致的方式将其视觉化。 那么当质量中心发生变化时,扭矩值是否保持不变?还是需要重新计算? 我在这里错过了什么关键信息? 如果有一个足够简单的答案,可以用python或伪代码来表示(关于如何处理扭矩),这将不胜感激。 编辑: 我会尽量更清楚。 没有摩擦,没有重力,没有任何物体与任何物体发生碰撞的能力(它们也在真空中)。 两个部件本身在一个接头处连接,但是它们是有效的刚性的(在扭矩力不会导致它们改变其接合方向的意义上)。 线速度从零开始,我们通过质心施加一次(冲量?)扭矩。 整个对象以预期的方式旋转,当对象的所有突然的一个部件改变其方向时(不增加对整个对象的额外力量)。 这改变了物体的质心和惯性矩。 由于对这个物体施加的唯一力量是扭矩,在这种假设的情况下会发生什么? 我最感兴趣的是如何将现有的能源应用到新的方向。 物体是否获得线速度并失去扭矩? 如果是的话,我该如何计算。 (我想如果我在外太空旋转,伸出我的胳膊,那可能是在同一条线上?)