Difference between revisions of "TntVirtualPad"
From GiderosMobile
| Line 6: | Line 6: | ||
=== Description === | === Description === | ||
Adds a virtual pad to your game/app screen. | Adds a virtual pad to your game/app screen. | ||
| + | |||
| + | You can find the graphics for the pads and the text file that comes with it: | ||
| + | * | ||
| + | * | ||
=== Examples === | === Examples === | ||
| − | '''Add a virtual pad | + | '''Add a virtual pad to your scene''' |
<source lang="lua"> | <source lang="lua"> | ||
require "tntvirtualpad" | require "tntvirtualpad" | ||
| − | local texturevpad = TexturePack.new("gfx/ | + | LevelX = Core.class(Sprite) |
| − | + | ||
| − | vPad:setJoyStyle(PAD.COMPO_LEFTPAD, PAD.STYLE_FOLLOW) | + | function LevelX:init() |
| − | vPad:setScale(PAD.COMPO_LEFTPAD, 1 | + | -- bg |
| − | vPad:setScale(PAD.COMPO_BUTTON1, 1) | + | application:setBackgroundColor(0x0099a0) |
| − | vPad:setHideDelay( | + | -- tnt virtual pad |
| − | vPad:start() | + | local texturevpad = TexturePack.new("gfx/UI/TNTVirtualPad.txt", "gfx/UI/TNTVirtualPadX.png", true) |
| + | self.vPad = CTNTVirtualPad.new(self, texturevpad, PAD.STICK_SINGLE, PAD.BUTTONS_ONE, 100, 0) | ||
| + | self.vPad:setJoyStyle(PAD.COMPO_LEFTPAD, PAD.STYLE_FOLLOW) | ||
| + | self.vPad:setScale(PAD.COMPO_LEFTPAD, 1) | ||
| + | self.vPad:setScale(PAD.COMPO_BUTTON1, 1) | ||
| + | self.vPad:setHideDelay(5000) | ||
| + | self.vPad:start() | ||
| + | -- tnt virtual pad listeners | ||
| + | self.vPad:addEventListener(PAD.LEFTPAD_EVENT, self.onVKeyDown, self) | ||
| + | self.vPad:addEventListener(PAD.BUTTON1_EVENT, self.vShoot, self) | ||
| + | end | ||
| + | |||
| + | -- VIRTUAL PAD HANDLER | ||
| + | function LevelX:onVKeyDown(event) | ||
| + | print(event.data.power) | ||
| + | print(event.data.angle) | ||
| + | print(math.cos(event.data.angle)) | ||
| + | print(math.sin(event.data.angle)) | ||
| + | -- example usage | ||
| + | --self.player.posx += self.player.vx * math.cos(event.data.angle) | ||
| + | --self.player.posy += self.player.vy * math.sin(event.data.angle) | ||
| + | --if math.cos(event.data.angle) < 0 then self.player:setSkew(5, -5) | ||
| + | --elseif math.cos(event.data.angle) > 0 then self.player:setSkew(-5, 5) | ||
| + | --else self.player:setSkew(0, 0) | ||
| + | --end | ||
| + | end | ||
| − | + | function LevelX:vShoot(event) | |
| − | -- | + | if event.data.state == PAD.STATE_BEGIN then |
| + | -- example usage | ||
| + | --local missile = Missiles.new(self.player.posx, self.player.posy - 12) | ||
| + | --table.insert(self.missiles_list, missile) | ||
| + | end | ||
| + | end | ||
</source> | </source> | ||
Revision as of 04:20, 3 December 2020
Supported platforms: ![]()
![]()
![]()
![]()
![]()
![]()
![]()
Available since: Gideros 2019.4
Description
Adds a virtual pad to your game/app screen.
You can find the graphics for the pads and the text file that comes with it:
Examples
Add a virtual pad to your scene
require "tntvirtualpad"
LevelX = Core.class(Sprite)
function LevelX:init()
-- bg
application:setBackgroundColor(0x0099a0)
-- tnt virtual pad
local texturevpad = TexturePack.new("gfx/UI/TNTVirtualPad.txt", "gfx/UI/TNTVirtualPadX.png", true)
self.vPad = CTNTVirtualPad.new(self, texturevpad, PAD.STICK_SINGLE, PAD.BUTTONS_ONE, 100, 0)
self.vPad:setJoyStyle(PAD.COMPO_LEFTPAD, PAD.STYLE_FOLLOW)
self.vPad:setScale(PAD.COMPO_LEFTPAD, 1)
self.vPad:setScale(PAD.COMPO_BUTTON1, 1)
self.vPad:setHideDelay(5000)
self.vPad:start()
-- tnt virtual pad listeners
self.vPad:addEventListener(PAD.LEFTPAD_EVENT, self.onVKeyDown, self)
self.vPad:addEventListener(PAD.BUTTON1_EVENT, self.vShoot, self)
end
-- VIRTUAL PAD HANDLER
function LevelX:onVKeyDown(event)
print(event.data.power)
print(event.data.angle)
print(math.cos(event.data.angle))
print(math.sin(event.data.angle))
-- example usage
--self.player.posx += self.player.vx * math.cos(event.data.angle)
--self.player.posy += self.player.vy * math.sin(event.data.angle)
--if math.cos(event.data.angle) < 0 then self.player:setSkew(5, -5)
--elseif math.cos(event.data.angle) > 0 then self.player:setSkew(-5, 5)
--else self.player:setSkew(0, 0)
--end
end
function LevelX:vShoot(event)
if event.data.state == PAD.STATE_BEGIN then
-- example usage
--local missile = Missiles.new(self.player.posx, self.player.posy - 12)
--table.insert(self.missiles_list, missile)
end
end
Methods |
EventsConstants |