为什么这个移动函数不能正常工作?(LUA/Corona SDK)
2021-1-7 18:34:1
收藏:0
阅读:110
评论:0
我正在为一个平台游戏的大学项目工作。
我做了一个库,其中包含一个创建新敌人对象的函数和另一个将该敌人来回移动的函数。
由于如果我创建2个或以上的敌人,这个最后的移动函数只对最后一个敌人起作用,所以这个最后的移动函数正给我带来一些意想不到的麻烦。
这是这个函数:
function M.moveTerra(terra)
if terra.x < terra.limitSx then
terra:setSequence("terraRight")
terra:play()
terra:setLinearVelocity(200,0)
end
if terra.x > terra.limitDx then
terra:setSequence("terraLeft")
terra:play()
terra:setLinearVelocity(-200,0)
end
end
Runtime:addEventListener("enterFrame", M.moveTerra)
当然,M就是库名称。
最后 n 个敌人是可以正确地移动的,而前 n-1 个只能向左移动(在创建敌人函数中,我默认定义了这个动作)。
我做错了什么?
[编辑]这是我用来创建敌人的函数(未声明为局部变量的变量在库的开头声明)
function M.new(a,b)
local terraOpt = {numFrames = 16, width = 250, height = 100 }
local terraSheet = graphics.newImageSheet("map/nemicoTerra.png", terraOpt)
local terraSeqs = {
{count = 8,
start = 1,
name = "terraRight",
loopCount = 0,
loopDirection = "forward",
time = 1000
},
{count = 8,
start = 9,
name = "terraLeft",
loopCount = 0,
loopDirection = "forward",
time = 1000
}
}
terra = display.newSprite(terraSheet,terraSeqs)
local terraShape = {-125,-50,125,-50,-125,50,125,50}
physics.addBody(terra,"kinematic",{friction = 1.0, bounce=0.0,density=0.3, shape=terraShape, isSensor=true})
terra.isFixedRotation=true
terra.type = "terra"
terra.x = a
terra.y = b
terra.limitSx = a-200
terra.limitDx = a+200
terra:setSequence("terraLeft")
terra:play()
terra:setLinearVelocity(-200,0)
return terra
end
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的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 代码?
