敌舰转向玩家但没有锁定到位
enemy ship rotates towards the player but does not lock into position
当我的敌舰向玩家移动时,我发现它们之间的距离为
private float FindDistance(Vector2 heroCenter, Vector2 spritePos)
{
var deltaX = Math.Pow((spritePos.X - heroCenter.X), 2); // the 2 is the power value (into the power of 2)
var deltaY = Math.Pow((spritePos.Y - heroCenter.Y), 2);
float distance = (float)Math.Sqrt(deltaX + deltaY);
return distance; // returns the distance between the two objects
}
然后我用这个代码计算敌舰旋转角度
distanceFromHero = FindDistance(Constants.heroCenter, spritePos);
if (distanceFromHero < Constants.HeroWithinRange)
{
heroClose = true;
VelocityX *= .985f; // enemy reduces vel X
VelocityY *= .985f; // enemy reduces vel Y
//atan2 for angle
var radians = Math.Atan2((spritePos.Y - Constants.heroCenter.Y), (spritePos.X - Constants.heroCenter.X));
//radians into degrees
rotationAngle = (float)(radians * (180 / Math.PI));
}
else
{
heroClose = false;
}
但奇怪的是,敌人虽然朝玩家移动,但并没有锁定并保持稳定,而是像钟摆一样运动,当他们在同一点时,敌舰会不停地旋转。一些代码方面的帮助会有所帮助。
我在无法加载到 Visual Studio 2017 的 XBox 论坛中找到了我的问题的完美答案,所以我制定了一个新的解决方案。希望其他人可以从微软制作的这个优秀教程中受益。解决方案是 here.
当我的敌舰向玩家移动时,我发现它们之间的距离为
private float FindDistance(Vector2 heroCenter, Vector2 spritePos)
{
var deltaX = Math.Pow((spritePos.X - heroCenter.X), 2); // the 2 is the power value (into the power of 2)
var deltaY = Math.Pow((spritePos.Y - heroCenter.Y), 2);
float distance = (float)Math.Sqrt(deltaX + deltaY);
return distance; // returns the distance between the two objects
}
然后我用这个代码计算敌舰旋转角度
distanceFromHero = FindDistance(Constants.heroCenter, spritePos);
if (distanceFromHero < Constants.HeroWithinRange)
{
heroClose = true;
VelocityX *= .985f; // enemy reduces vel X
VelocityY *= .985f; // enemy reduces vel Y
//atan2 for angle
var radians = Math.Atan2((spritePos.Y - Constants.heroCenter.Y), (spritePos.X - Constants.heroCenter.X));
//radians into degrees
rotationAngle = (float)(radians * (180 / Math.PI));
}
else
{
heroClose = false;
}
但奇怪的是,敌人虽然朝玩家移动,但并没有锁定并保持稳定,而是像钟摆一样运动,当他们在同一点时,敌舰会不停地旋转。一些代码方面的帮助会有所帮助。
我在无法加载到 Visual Studio 2017 的 XBox 论坛中找到了我的问题的完美答案,所以我制定了一个新的解决方案。希望其他人可以从微软制作的这个优秀教程中受益。解决方案是 here.