我试图用一个物体来映射我的障碍物。
我正在使用随机随机散布它在地图周围,现在我想硬编码X& Y坐标有一个数字数组,但是typescript只使用X坐标的循环的最后一个值。如何为每个障碍物分配特定数字?
随机生成
module objects {
export class Obstacles extends objects.GameObject {
public Start():void {
this.x = Math.floor(Math.random() * (640) - this.width) + this.halfWidth;
this.y = Math.floor(Math.random() * (480) - this.width) + this.halfWidth;
console.log("x " + this.x);
console.log("y " + this.y);
}
}
使用数组
指定x值private _obstX: number [] = [200, 250, 300, 350, 400];
public Start():void {
for (let count = 0; count < this._obstX.length; count++) {
this.x = this._obstX[count];
}
this.y = Math.floor(Math.random() * (480) - this.width) + this.halfWidth;
console.log("x " + this.x);
console.log("y " + this.y);
}
只分配了一个x值,忽略了数组中的另一个x值
主文件中的代码
private _obstPlanes: objects.Obstacles[];
private _obstNum: number;
public Start(): void {
this._obstPlanes = new Array<objects.Obstacles>();
this._obstNum = 5;
for (let count = 0; count < this._obstNum; count++) {
this._obstPlanes[count] = new objects.Obstacles(this.assetManager);
}
}
public Main(): void {
this._obstPlanes.forEach(obstPlane => {
this.addChild(obstPlane);
});
}
答案 0 :(得分:1)
每次实例化一个新的Obstacles
对象时,都会遍历数组_obstX
,将x
属性设置为数组中的第n个值。您的所有Obstacles
的{{1}}值都为400,因为x
循环的最后一次迭代会将for
设置为数组中的最后一个值。
我会将this.x
数组移动到主文件,并向_obstX
构造函数添加x
参数/属性。我现在不确定你的构造函数看起来如何,但可能是这样的:
Obstacles
然后使用:
调用构造函数constructor(private assetManager: AssetManger, private x: number) {}
这会将new objects.Obstacles(this.assetManager, _obstX.shift())
中的第一个元素发送到构造函数,并从数组中删除该值。在创建每个_obstX
对象时,它将具有数组中的下一个Obstacles
值。