一个麻烦的地方
gamemaker吧
全部回复
仅看楼主
level 15
开不了车 楼主
在Room中,实例的创建代码是先于对象的create事件的,这意味着要设置独立的初值就变得比较麻烦
2014年09月19日 02点09分 1
level 8
用的是instance-create创建的实例吗,没太听懂你的问题,有简单点的代码吗。我也是新手。。
2014年09月21日 08点09分 3
举个例子,对象的事件中Create设置self.hp为100,但在这个room中,想把其中一个实例的hp设为10,这时候用的是设置独立的Creation Code,然而因为这些代码的执行时机先于对象的Create,因而hp还是100
2014年09月21日 08点09分
回复 开不了车 :creationcode不懂是啥,如果要设置其中一个实例hp为10的话 用with(对象.id)可不可以?
2014年09月21日 08点09分
回复 anheimfb :在房间创建时候每个实例执行的代码
2014年09月21日 09点09分
回复 开不了车 :哦 知道了 但是还不是很理解你的具体代码是怎么写的。。酸了 反正我是个菜鸟
2014年09月21日 10点09分
level 10
假设你想创建10个实例,
for(i=0; i<=9; i+=1)
{
var inst;
inst = instance_create(0,0, obj);
if i = 0 inst.hp = 100;
}
2014年09月21日 10点09分 4
那个inst.hp=100我打错了,把它换成10
2014年09月21日 10点09分
这样你创建的10个实例中,第一个的hp是10,而其余的是100。 你也可以改变i的值比如 if i = 5 inst.hp = 10 // 这样你就把第六个实例的hp设为0
2014年09月21日 10点09分
额又打错了,应该设为10。汗。。。
2014年09月21日 10点09分
不,这些实例是在Room中已经放置好了的
2014年09月21日 10点09分
level 10
如果你想独立设置其中一个实例的值,那你必须先知道其id。不然你就只能按照创建顺序来独立设置实例的值,像我上面写的。
如果你想把10个实例里随机一个的hp设置为10的话:
var arr;
for(i=9; i>=0; i-=1)
{
arr[i] = instance_create(0,0, obj);
}
var rnd;
rnd = round(random(10));
(arr[rnd]).hp = 10;
//那个random函数的取值范围我忘了,你先看看。
2014年09月21日 10点09分 5
level 10
如果你有10个实例已在房间,那么它们肯定有创建顺序。
你在object的create里输入
index = instance_number(obj);
if index = no hp = 10
//no是你想改变的第几个实例。
2014年09月21日 10点09分 6
它们的创建顺序是按照你放置的顺序。
2014年09月21日 10点09分
回复 yiwei138 :[啊]这个顺序难以记忆啊
2014年09月21日 10点09分
回复 yiwei138 :所以我现在的方法是在实例的顶上放一个控制对象,当定时器1的时候会向下移动并设置碰撞到的对象的变量
2014年09月21日 10点09分
回复 开不了车 :如果你实例很多的话,不如直接设置两个物件好了。 两个物件都拥有同一个parent,之后修改起来也很方便。
2014年09月21日 11点09分
吧务
level 12
我不知道你房间有多大,是否房间内所有实例是否都实时生成(动态生成)?
如果房间初始实例较少,实例可以在room的create代码来创建(instance_create)。这样就避免了实例create代码优先于room create代码的问题。
2014年09月22日 03点09分 8
1