一个非常简单的数学问题。我试图在我的一个2D闪光足球点球射门游戏中实现一个简单的逻辑,以检查我的球员是在稳定的球对象的右侧还是左侧。只有当球员位于球的左侧而不是右侧时,我才想踢球。
我正在使用ActionScript 3.我正在尝试在我的主文档类中实现此逻辑。我有两个用于稳定球对象的类和一个用于我的播放器的类。
if(!moveLeft && !moveRight && canShootBall){
for each(var footy:FootBall in footballArray){
if(instance_Xena.hasCollided(footy) && checkIfPlayerLeft(footy)){
trace("COLLISION WITH " +footy.getId());
instance_Xena.playKickAnimation();
}
}
}
public function checkIfPlayerLeft(footy:MovieClip):Boolean{
//check if the player is on the left side of the ball object here
}
所以我尝试计算x位置的差异,例如" instance_Xena.x - footy.x"但它会给出相同的正数。如果我可以得到一个正值,如果球员在左侧,负值,如果球员在球的右侧,那么它将解决我的问题。
我记得在3D空间中使用Vector3点积来检查玩家是在敌人前面还是后面。但不确定它是否适用于此。我该如何检查?
答案 0 :(得分:0)
嘿伙计们,我终于找到了一个解决方案并且它可行。我使用了一个称为三角形的签名区域的东西,它完美地运作