gpt4 book ai didi

c# - 碰撞检测代码工作后如何弹回物体?

转载 作者:太空宇宙 更新时间:2023-11-03 11:36:14 25 4
gpt4 key购买 nike

最近我正在阅读 XNA 4.0 Game Developmeny by Example 这本书。在其中一章中,这段代码用于在碰撞检测后弹跳(反射)对象:

private void BounceAsteroids(Sprite asteroid1, Sprite asteroid2)
{

Vector2 cOfMass = (asteroid1.Velocity + asteroid2.Velocity) / 2;
Vector2 normal1 = asteroid2.Center - asteroid1.Center;
normal1.Normalize();
Vector2 normal2 = asteroid1.Center - asteroid2.Center;
normal2.Normalize();

asteroid1.Velocity -= cOfMass;
asteroid1.Velocity = Vector2.Reflect(asteroid1.Velocity, normal1);
asteroid1.Velocity += cOfMass;

asteroid2.Velocity -= cOfMass;
asteroid2.Velocity = Vector2.Reflect(asteroid2.Velocity, normal2);
asteroid2.Velocity += cOfMass;
}

谁能用一些图表或一些易于可视化的示例向我解释这段代码。我无法想象这段代码。如果有人知道哪本书可以让我学习这类对游戏编程有用的物理知识,那么我也将非常感激。

最佳答案

这是在尝试模拟反弹。

归一化和中心计算使 Blob 在边缘接触时开始反弹,而不是在它们的中心可能接触时。

然后根据涉及每颗小行星质量的一些计算改变速度。

毫无疑问,Reflect 函数会计算一些角度,以便事情朝着正确的方向发展。

关于c# - 碰撞检测代码工作后如何弹回物体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6216884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com