好吧,当我尝试使 BallProjectile 与障碍物碰撞时,球会停止并产生新的障碍物时,我会收到此错误。
// Checks if the ball is colliding with an obstace, then stops it if it is
BallProjectile obstacleCollision = (BallProjectile) getOneIntersectingObject(Obstacle.class);
if (obstacleCollision != null)
{
xSpeed = 0;
ySpeed = 0;
myWorld.addObject(new BallProjectile(), 50, 559);
return;
}
如何停止此错误?请注意,障碍就是为了阻挡球而创建的圆圈。
最佳答案
您在提供的代码中进行强制转换的唯一位置是:
BallProjectile obstacleCollision = (BallProjectile) getOneIntersectingObject(Obstacle.class);
所以我认为这就是你的问题所在。似乎这个方法的返回不能转换为 BallProjectile
编辑:
要验证您的碰撞,您可以执行以下任一操作:
Obstacle obstacleCollision = (Obstacle) getOneIntersectingObject(Obstacle.class);
if(obstacleCollision != null) {
//do your things here
}
或
Actor obstacleCollision = getOneIntersectingObject(Obstacle.class);
if(obstacleCollision != null) {
//do your things here
}
两种方法应该以相同的方式工作
关于java - Greenfoot:java.lang.ClassCastException:障碍物无法转换到 BallProjectile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26899106/