我打算创建一个包含景物的游戏.将使用高度场定义景观,并且对象将在顶部移动,并在地形上飞行.如果您曾经玩过旧游戏Marble Madness和Virus/Zarch,那就是我想要创造的那种复杂性和风格.
我在互联网上看到过各种物理引擎,以及一些关于如何将高度场渲染为地形的教程,但它们要么缺乏文档,要么看起来过于复杂,无法满足我的需求.
我只需要一种方法来绘制高度场,在其上放置3D物体,然后让它们在山上滚动,或者在天空中飞来飞去.我不介意自己编写代码,所以任何相关的教程都会很好.
我正在寻找XNA的3D物理引擎.我听说过一些选择,但我需要的是:
你用过这样的东西吗?你能推荐什么吗?
我一直试图解决这个问题好几天了,但我必须遗漏一些东西.
已知变量:
vi =初始速度
t =动画持续时间
d =距离.
结束速度应始终为零
我正在尝试创建的函数:D(0 ... t)=给定时间的当前距离
使用这些信息,我希望能够以不同的速度创建平滑的动画曲线(缓入/缓出).
动画必须能够从初始速度轻松进入.
动画必须正好是t秒,并且必须精确地行进d个单位.
曲线应该倾向于平均速度,加速发生在曲线的开始和结束部分.
我对额外的配置变量持开放态度.
我能想出的最好的东西不会影响初始速度.我希望更聪明的人可以帮助我.;)
谢谢!
ps我正在使用ECMAScript变体
我试图制作(基本上)一个简单的游泳池游戏,并希望能够预测一旦它击中另一个球后射击的位置.
我相信,第一部分是计算cueball是否会击中任何东西,如果是,它会碰撞到哪里.我可以计算出一条线和一个球的碰撞点,但不是2个球.
因此,考虑到2个球的x/y位置和速度,我如何计算它们碰撞的点?
(PS:我知道我可以通过计算沿途每一步的两个球之间的距离来做到这一点,但我希望有一些更优雅和最优的东西.)
设置示例:尝试计算红点
我有一个移动点(在一个维度上),我需要它顺利移动.所以我认为它的速度必须是一个连续的函数,我需要控制加速度然后计算它的速度和位置.
该算法对我来说似乎并不明显,但我想这一定是一个常见问题,我只是找不到解决方案.
笔记:
我正在尝试实现重力,其中包括通话时间,以及加速度.
我尝试过使用通常的重力,看起来像这样:
velocity += gravity * dt;
position += velocity * dt;
Run Code Online (Sandbox Code Playgroud)
对于正常的平台游戏来说,这可能足够好了,但是我试图让游戏受到"直升机游戏"的启发,在那里你必须穿过隧道,而不要碰到墙壁.
我想要做的不同的是,我希望能够在下降的过程中节省速度,这将在上升的过程中使用,所以我将在开始时加速.
我也想要一些通话时间,所以如果我使用了代码示例中的重力,那么当你触及顶部时它不会像你那样快速地降低你的速度.
这张图片说明了我想要的曲线:
请注意,整个控制是通过一把钥匙完成的,所以例如,如果您按住空间,您将飞起来,如果您释放空间,则会潜水.
角色也不会向左或向右移动,因为它在屏幕上会有一个静态X位置,因此不能使用矢量.
我花了好几个小时试图让它工作,但没有成功.我也试过在互联网上搜索,但没有任何运气.
游戏"鲸鱼小道"得到了我想要的引力.
这是一个游戏视频的链接:http://www.youtube.com/watch?v = 50Q0OWcuDJs
我不是那么大的物理家伙,所以如果你能给出一个例子,它会很酷实际代码
我希望任何人都可以帮我解决这个问题.
是否有替代方法可以为物理模拟制作教育Java小程序,如弹丸运动,重力等?
嗨,我想整合一个从0到几个不同上限(大约1000)的函数.我已经使用for循环编写了一段代码来执行此操作,并将每个值附加到空数组.然而,我意识到我可以通过做更小的积分然后将前一个积分结果添加到刚刚计算的结果来使代码更快.所以我会做相同数量的积分,但是在更小的间隔内,然后只需添加前一个积分就可以得到从0到上限的积分.这是我的代码:
import numpy as np #importing all relevant modules and functions
from scipy.integrate import quad
import pylab as plt
import datetime
t0=datetime.datetime.now() #initial time
num=np.linspace(0,10,num=1000) #setting up array of values for t
Lt=np.array([]) #empty array that values for L(t) are appended to
def L(t): #defining function for L
return np.cos(2*np.pi*t)
for g in num: #setting up for loop to do integrals for L at the different values for t
Lval,x=quad(L,0,g) #using the quad function to get the values for L. …Run Code Online (Sandbox Code Playgroud) physics ×10
math ×4
c# ×2
gravity ×2
python ×2
simulation ×2
xna ×2
2d ×1
3d ×1
actionscript ×1
algorithm ×1
animation ×1
box2d ×1
for-loop ×1
java ×1
javascript ×1
optimization ×1
scipy ×1