- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 slider ,我通过每个刻度之间的位置差异来计算其速度(由于通过触摸屏使用它,有时可能会很大,所以也许我应该将其限制在某个任意数字以避免其中一些问题?)
我有一个具有 3 维方向向量和速度的球。
当球与 slider 碰撞时,我会反转其在 Z 轴上的方向(远离 slider ),然后使用 slider 速度来操纵其 X(左 <-> 右)方向。所以:
ball.direction.x += (slider_friction * slider_velocity)
现在球的更新进行如下:
velocity = ball.velocity * time
ball.direction.normalise()
ball.position = ball.direction * ball.velocity
这似乎工作得很好,除了在某些情况下,任何球轴似乎很可能等于零,导致在某些情况下它永远不会返回到 slider 。对此有什么好的解决方案吗?当 block 与 block 碰撞时,处理 block 响应的好方法是什么?它应该返回到以直角弹跳,还是应该使用 slider 应用的相同弹跳修改器保持反射?此外,对于这种射弹模拟的任何其他物理技巧也将不胜感激。
最佳答案
嗯,这是一个很好的问题;问题是,一个好的解决方案(即,看起来和感觉起来都像真实物理的解决方案)本质上是使用真实物理的解决方案。幸运的是,这个问题中的大部分牛顿物理学都可以很容易地简化。如果我说得过于冗长,请原谅我,但物理学往往会这样对你。
因此,为了定义问题,这是打砖 block 球和桨之间的弹性(即,没有吸收能量)碰撞。首先,既然你显然已经把垂直运动降低了,我不会关心这个。因此,接下来的内容都是关于碰撞的水平分量。
Racket 将一定量的水平动量传递给球(尽管,由于这是打砖 block 物理, Racket 本身不会损失动量:P)。这可以通过两种方式实现——使球旋转,以及给球一些水平动量(显然,如果球已经具有水平动量或旋转,则增加的动量将......好吧,添加)。
δ动量 + δ角动量 = 动量桨给出
当然,使用动量可能会很烦人,因为您实际上不必这样做。我假设球和桨具有恒定的质量(也就是说,球不会突然变重,尽管您可以轻松地使用它),因为这样您就可以将每个球的质量从动量方程中分解出来。那么,
水平速度增量 + 角速度增量 = 桨速度 * 桨质量/球质量
要得出一个可以使用的方程式,您必须设置 Racket 的动量有多少会进入旋转,以及有多少动量会进入球运动。例如,
mass_factor = 2 # ratio between paddle and ball masses
angular_factor = 0.3 # the amount of the paddle's movement which will go into the ball's spin
# and now for the bouncy-bouncy
ball.hVel += (1 - angular_factor) * paddle.hVel * mass_factor * friction or whatever
ball.spin += angular_factor * paddle.hVel * mass_factor * friction or whatever
ball.vVel = - ball.vVel # of course, its vertical velocity reverses
这足以建立一个准现实的反弹,但仍然存在一个金 block (你不需要解决这个问题,但解决它会让你的打砖 block 变得惊人)——所有的旋转会发生什么?旋转可以以某种方式用于更有趣的弹跳吗?
所以,回顾一下,你的旋转是球的外围相对于中心移动的速度。事实是,每当一个旋转的球撞到静止的物体时,它的旋转和速度都会发生变化。如果旋转的球击中静止表面,球会在与其旋转方向相反的方向上受到一点“踢”(如果在接触点测量旋转),并且旋转将会改变。
#Upon collision with a surface (assumed horizontal, with the ball above the surface)
ball.hVel += -(ball.Avel * rate) # Where "rate" is the ratio which determines how much angular velocity decays with each bounce
ball.Avel *= 1 - rate # So the angular velocity decays properly
由于角速度是旋转对称的,因此您只需将不同角度的碰撞(墙壁上的球、天花板上的球)视为其旋转。
唷,这无意中啰嗦了,而且还远未完成,但恕我直言,这足以回答你的问题了。
关于math - 打砖 block 物理(射弹物理模拟),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8063696/
我一直在寻找游戏/模拟解决方案,以便在时间流逝时寻找距离,但这不是我要找的。 我正在寻找一个 O(1) 公式来计算(0 或 1 或 2)时钟时间,其中两个圆圈彼此之间的距离恰好为 r1+r2。负时间是
我究竟做错了什么? > crossprod(1:3,4:6) [,1] [1,] 32 根据本网站:http://onlinemschool.com/math/assistance/ve
嗨,我目前正在为类开发一个迷你游戏(第一次做这样的事情),我根本不知道如何开始碰撞检测。好吧,我正在创建的游戏是一款在冰冷的圆形竞技场上自上而下的相扑格斗游戏,您可以四处移动以获得动力和速度,并尝试击
这段代码取自使用 XNA 框架构建的游戏。我想从三角学和物理学的角度解释一下它是如何工作的。 ball.velocity = new Vector2((float)Math.Cos(cannon.ro
因此,我正在努力自学 Canvas (HTML5) 并编写了大部分简单的游戏引擎代码。它是空间场景(行星、恒星、天体等)的二维表示。我的默认“Sprite”类有一个像这样的帧监听器: “baseCla
这个问题在这里已经有了答案: Are the physical memory addresses of an array also stored in order like the virtual o
我正在尝试阅读英特尔软件开发人员手册以了解操作系统的工作原理,这四个寻址术语让我感到困惑。以上是我的理解,如有不对请指正。 线性地址 : 对一个孤立的程序来说,似乎是一长串以地址0开头的内存。该程序的
我尝试在 AndEngine 示例包中复制并粘贴物理示例。 没有出现错误,但当我运行它时,模拟器显示“不幸的是,PhysicsActivity 已停止”。 模拟器使用 API 15,GPU 已开启,磁
当我运行此代码时,第一行 CollisionWithplayer 给了我一个错误的指令错误。该错误不会每次都会出现,只是偶尔出现一次,并且没有类似的条件来确定导致该错误的原因。 func didBeg
您好,我有以下 Canvas 应用程序:http://dev.driz.co.uk/canvas/ 正如您将看到的,它渲染了一堆球。我遇到的问题是当应用程序首次启动时,球被 Canvas 边缘切断。他
我有两个 3d 物理 vector ,带有 (x,y,z) 和方向。我想对它们做一些操作。但我有一些问题: 我应该如何在 C++ 中表示这个 vector ?换句话说,我在下面写了类,但我不知道如何表
我有一个有 body 的 Sprite 。我想通过路径移动 Sprite 。我已经尝试使用 PathModifier 执行此操作, Sprite 会按原样移动,但它的 body 不会跟随 Sprite
我开发了类似投币推土机的游戏。为了硬币的平稳移动,我为每个硬币添加了一种物理 Material ,但这样做之后我的游戏速度非常慢。有没有其他选择,或者我如何在不使用物理 Material 的情况下使硬
我正在开发一款简单的平台游戏,例如 super 马里奥。我将 Java 与 LibGdx 引擎一起使用。我的物理问题与帧率无关。在我的游戏中,角色可以跳跃,跳跃高度显然取决于帧率。 在我的桌面上,游戏
我正在开发一个可能包含数学、物理和化学符号的问答应用程序,因为这是一个实时游戏应用程序,每次问题将从服务器下载并针对特定主题显示。它需要是一个原生的 Android 应用程序,并且性能非常重要(两人游
我的任务是编写一个对象,该对象可以接收不同类型的路径/url,并返回它是什么类型的路径/url。例如路径可以是 1. [drive]:\Temp 2. \\Temp 3. Temp (assuming
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
注意:当我提到层时,我指的是物理层。此站点上与“层”相关的许多问题都指的是逻辑层,这不是我要问的。 我正在设计一个使用标准“3 层”架构的应用程序,包括表示层、业务逻辑 (BLL) 层和数据访问层 (
如何检查设备上的屏幕或物理/电容式导航按钮 最佳答案 您可以使用 ViewConfiguration.get(context).hasPermanentMenuKey() 仅适用于 API 级别 14
我在我的 android 游戏中使用 AndEngine,我从 github 下载了主 AndEngine,但是没有主的 Physics Box2D 扩展。我不知道在哪里下载它或我可以使用它的哪个版本
我是一名优秀的程序员,十分优秀!