如何在等距平面上计算子弹的弹道?
2014-1-15 16:32:52
收藏:0
阅读:104
评论:2
我需要一个“iso guru”的帮助。我在一个游戏中摆弄着两个放置在等角网格上的大炮。当一个大炮发射子弹时,它应该沿着曲线轨迹飞行,如下所示。虽然在x/y平面上这将是一个简单的任务,但我不知道如何在等角面上计算曲线路径(高度可变)。
请问有人能指点我正确的方向吗? 我需要从一个场地发射子弹到任何其他场地,而子弹的飞行高度(曲线的“强度”)取决于给定的射击力量。
有什么提示吗? :(
点赞
用户869951
如果没有横向力,您可以在XZ平面使用弹道运动的2D方程(因此y在所有时间上都为0),然后通过围绕z轴进行3D变换来考虑炮在3D空间中的实际方向。这个变换矩阵非常简单,您可以展开乘法(写出相乘的项)以得到3D方程式。
2014-01-15 22:09:02
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
这可能有所帮助。轨迹函数需要一些轨迹参数(速度,仰角,起始位置和重力),并返回一个函数,该函数按世界空间中的x位置计算y位置。 转换器返回一个函数,用于在给定投影角度的情况下在世界坐标和屏幕坐标之间进行转换。 接下来是它用于计算屏幕空间中某些点的轨迹的示例。 这真的是为了指示目的。它具有一堆可能被零除的潜力,但是它可以产生在合理的仰角,投影和速度下看起来不错的轨迹。
-- 世界空间中的轨迹 function trajectory(v,elevation,x0,y0,g) x0 = x0 or 0 y0 = y0 or 0 local th = math.rad(elevation or 45) g = g or 9.81 return function(x) x = x-x0 local a = x*math.tan(th) local b = (g*x^2)/(2*(v*math.cos(th))^2) return y0+a-b end end -- 在屏幕坐标和世界坐标之间进行转换 function converter(iso) iso = math.rad(iso or 0) return function(toscreen,x,y) if toscreen then y = y+x*math.sin(iso) x = x*math.cos(iso) else x = x/math.cos(iso) y = y-x*math.sin(iso) end return x,y end end -- 速度为60m/s,仰角为70度 t = trajectory(60,70,0,0) -- 30度的等轴投影 c = converter(30) -- 在屏幕坐标中的x for x = 0,255 do local xx = c(false,x,0) -- 在世界坐标中的x local y = t(xx) -- 在世界坐标中的y local _,yy = c(true,xx,y) -- 在屏幕坐标中的y local _,y0 = c(true,xx,0) -- 在屏幕坐标中的地面 yy = math.floor(yy) -- 不需要 if yy>y0 then print(x,yy) end -- 如果在地面以上 end