利用三角函数来计算鼠标位置确定运动角度。
2015-10-7 21:34:26
收藏:0
阅读:77
评论:1
我正在使用Lua编写一款游戏(即使您不知道Lua,由于其适用于任何编程语言,您也可以帮助我)。我的问题是我已经在玩家的表中定义了x和y变量:
player = {}
player.x = 10
player.y = 10
player.velocity = 50
我的目标是让玩家朝着屏幕上鼠标的位置移动。我目前已经设置了根据鼠标位置每次更新增加/减少x值和y值。我的代码类似于:
function update(delta_time) -- delta_time是自上次更新以来的毫秒数
if mouse.x > screen.width and mouse.y < screen.height then
player.x = player.x + player.velocity * delta_time
player.y = player.y + player.velocity * delta_time
end
那只是我定义的一个方向的例子。我的问题是我不想使用巨大的流程控制块来检查鼠标的x和y位置处于什么象限,并相应地调整玩家的x和y位置。我希望有一个流畅的360度检测,可以将玩家移动到鼠标相对于中心的角度。
我还有一个问题,当我将玩家移动到屏幕的右侧时,我只会增加x值,但当我将玩家移动到屏幕的东北侧时,我将增加x值和y值。这意味着玩家的速度将根据移动角度的精度增加2倍。当我将东北方向和西北方向分别变为东和西时,玩家现在会以3倍的速度前进,因为我将y增加/减少2,而将x增加/减少1。我不知道如何解决这个问题。我在数学和三角学方面非常擅长,但我很难将其应用到我的游戏中。我只需要有人为我打开灯,我就能明白了。如果您真的读完了这一切,感谢您的时间。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
从玩家位置到鼠标位置计算出一个向量。对此向量进行归一化(即除以其长度),然后乘以player.velocity,然后将其添加到player.x和player.y上。这样,速度保持恒定,在所有方向上都可以获得平稳的移动。
-- 定义差异向量 vec = {} vec.x = mouse.x - player.x vec.y = mouse.y - player.y -- 计算长度,以进行归一化 vec_len = math.pow(math.pow(vec.x, 2) + math.pow(vec.y, 2), 0.5) -- 归一化 vec.x = vec.x / vec_len vec.y = vec.y / vec_len -- 移动玩家 player.x = player.x + vec.x * player.velocity * delta_time player.y = player.y + vec.y * player.velocity * delta_time