【发布时间】:2020-09-12 22:54:46
【问题描述】:
我希望游戏中的角色在平台上弹跳时向上移动。为此,我计算了每个平台与我的角色之间的 x 和 y 距离,然后将这些值放入两个数组中:一个用于 x 距离,另一个用于它们之间的 y 距离。如果角色在平台上,我希望它向上移动。如何确定数组中的值是否小于某个数字?我知道我的代码效率很低,但我也不知道如何改进。
function loop(e:Event):void{
var plats:Array = new Array();
//adding platforms to array
plats.push(plat1);
plats.push(plat2);
//calculating distance between platform and character
var distx1 = Math.sqrt((doodler.x - plat1.x)*(doodler.x - plat1.x));
var disty1 = Math.sqrt(((doodler.y + 50) - plat1.y)*((doodler.y + 50) - plat1.y));
var distx2 = Math.sqrt((doodler.x - plat2.x)*(doodler.x - plat2.x));
var disty2 = Math.sqrt(((doodler.y + 50) - plat2.y)*((doodler.y + 50) - plat2.y));
//adding distance calculations to distance arrays
var disx:Array = new Array();
disx.push(distx1);
disx.push(distx2);
var disy:Array = new Array();
disy.push(disty1);
disy.push(disty2);
for (var i:int = 0; i < disx.length; i++) {
//this is where i'm confused
if(disx[i] < 65 && disy[i] < 3){
doodler.y -= 100;
}
【问题讨论】:
-
通常使用循环来批量处理 Arrays 中的数据。
-
@Organis 好吧我做错了什么
-
您混淆了 all 和 any 之间的区别。您的语句在满足给定条件的每个 i 上执行。但是你想要的是检查它们是否 all 满足条件。
-
我确实想检查其中是否有任何满足条件。我当前的语句现在根本没有执行,这就是为什么我想知道我的代码是否有问题。如果我输出disx[0]和disy[1],都小于3,所以字符应该向上移动,但不是@Organis
-
如果我只在数组中放一个值,它就可以工作。但是一旦我添加了多个距离值,角色就会立即从屏幕上移出,因为我在 if 语句之后的代码中有这个:
else{ doodler.y += 5; }
标签: arrays actionscript-3 flash bounce