有没有人跑过或者有一个Jos Stam的Stable Fluids的例子但是在3D中?我需要在openGL中追求这个版本的3D版本,但这样做的时间非常糟糕.在openGL/C/C++中是否有这样的例子?
所以我来自传统的游戏开发,它使用OOP原理,而且从我看到你可以使用LUA模仿它,一旦你知道你在做什么.在一些代码发布中,我发现了如何使用director类并创建具有new()函数等的文件.
我正在寻找的是一种管理我的武器的方法.我有一个球员和一个对手,我宁愿拥有一个武器类,比如武器佳能.我所做的是:
-- private vars here
local power
local canonSprite
local whatever
local someFunction = function()
...
end
-- Private stuff here
local weaponCanon = {}
weaponCanon.fire = function(atX, atY)
...
end
weaponCanon.reset = function()
...
end
return weaponCanon
Run Code Online (Sandbox Code Playgroud)
然后在我的关卡代码中,我只是这样做:
local weaponCanon = require("weaponCanon")
weaponCanon.fire(100, 100)
Run Code Online (Sandbox Code Playgroud)
这很有效,并且允许我在编写武器时使用"私人"和"公共"心态.问题是,如果我想让玩家和对手拥有一个正典:
local playerWeapon = require("weaponCanon")
local opponentWeapon = require("weaponCanon")
Run Code Online (Sandbox Code Playgroud)
这只是将同一个对象而不是新实例返回给该对象.所以我只能在对手武器位置获得一枚武器.这显然是我想要/需要的.
我们的游戏中有很多武器,如果只有一个版本的每个文件都有一个设置告诉我们它是对手武器还是玩家武器会很不错.另一种方法是复制每个文件并创建一个weaponPlayerCanon和一个weaponOpponentCanon,但我想到修改一个文件并且每次都要更改2个以上的文件时会感到畏缩.
如何让它返回一个实例以及LUA文件的结构是什么?
谢谢或任何和所有的帮助
-d
在遇到一些问题后,我现在正在使用 LUA 中间类库,但我似乎无法弄清楚情况。
说我有我的课:编辑:有一个错字:这是实际的功能
require "middleclass"
weaponCanon2 = class("weaponCanon2")
function weaponCanon2:onWeaponCollision(event)
if (event.phase == "began") then
if (event.other.name ~= "ground") then
self.canonBall.inAir = false
end
end
end
function weaponCanon2:initialize(atX, atY, inGroup)
self.name = "some value"
self.someObject:addEventListener("touch", **weaponCanon2.onWeaponCollision**)
...
end
Run Code Online (Sandbox Code Playgroud)
当我这样做时,上面示例中的每个变量(例如 self.name)现在都为零。我相信这是因为我的功能是:
function weaponCanon2:onWeaponCollision(event)
...
end
Run Code Online (Sandbox Code Playgroud)
然后设置像 self.collisionEvent = WeaponCanon2.onWeaponCollision 这样的碰撞事件变量不是一回事。我不是 100% 确定 : 和 . 运营商是在 LUA 方面,但这些给了我不同的问题。
现在另一个例子是我有一个重置功能。计时器关闭,然后调用重置功能。如果我这样做:
timer.performWithDelay(100, weaponCanon2.resetShot, 1)
Run Code Online (Sandbox Code Playgroud)
然后在 100 毫秒内它会调用 WeaponCAnon2.resetShot 1 次。当它这样做时,我所有的 self.name 等变量都为零。现在,如果我创建我的班级:
require("weaponCanon2")
local canon = weaponCanon2:new("someName")
canon:saveInstance(canon)
Run Code Online (Sandbox Code Playgroud)
然后回到我的类文件中:
function saveInstance(value)
self.instance …Run Code Online (Sandbox Code Playgroud) 我有一些代码,我显示一个精灵N秒.N秒后删除此框,我想调用我可以选择的功能.例如,在10秒钟内我想调用showBoxEnded.
我在这看了看,看到我可以使用SEL功能了.我写:
-(void)caller:(id)sender
{
NSLog(@"Function Called!");
}
Run Code Online (Sandbox Code Playgroud)
我可以调用callFunc来设置将被调用的函数:
-(void) callFunc:(SEL)func;
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试这个时,我的函数永远不会被调用.我在这里错过了什么吗?这有可能像在C++中一样吗?
是否可以将SEL函数作为参数传递给函数?
谢谢!
创建散点图时,它会自动标记图表本身上的点.我发现这非常烦人,并希望将其关闭,因为它对我们正在做的事情没有用.有没有办法没有删除所有标签?
要清除,这些显示没有添加任何注释..我想删除此默认行为.

我想删除图中的1,2,3,4,5,6,7等.
这是我用来创建图表的代码.正如您所看到的,它没有设置任何注释等.
-(void) constructScatterPlot
{
// Create graph from theme
graph = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
[graph applyTheme:theme];
scatterPlotView.hostedGraph = graph;
graph.paddingLeft = 0.0;
graph.paddingTop = 0.0;
graph.paddingRight = 0.0;
graph.paddingBottom = 0.0
// Setup plot space
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
plotSpace.allowsUserInteraction = NO;
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-2.5) length:CPTDecimalFromFloat(28)];
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-5) length:CPTDecimalFromFloat(desiredPeak+10)];
NSArray *exclusionRanges = [NSArray arrayWithObjects:[CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-1) length:CPTDecimalFromFloat(-100)],
[CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(25) length:CPTDecimalFromFloat(10000)], nil];
// Axes
CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet;
CPTXYAxis …Run Code Online (Sandbox Code Playgroud)