首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >第一个速度计算的球没有到达它应该去的目标。

第一个速度计算的球没有到达它应该去的目标。
EN

Stack Overflow用户
提问于 2020-02-14 06:58:11
回答 1查看 36关注 0票数 0

在下面的函数中,球与目标的距离已知(R)。另外,得到的向量和x轴之间的角度也是已知的(LaunchAngle).由于这些参数(R,LaunchAngle),我计算了一个球的初始速度。我检查了所有的值。根据物理学,它们都是正确的。虽然所有的计算都是正确的,但球并没有击中目标。

代码语言:javascript
复制
void LaunchFromTargetPositionWithoutFrictionForce()
        {
            Vector3 projectileXZPos = new Vector3(transform.position.x, 0.0f, transform.position.z);
            Vector3 targetXZPos = new Vector3(TargetObjectTF.position.x, 0.0f, TargetObjectTF.position.z);
            transform.LookAt(targetXZPos);

            float R = Vector3.Distance(projectileXZPos, targetXZPos);
            float G = -Physics.gravity.y;

            float Vz = Mathf.Sqrt(G * R / Mathf.Sin((2.0f * LaunchAngle) * Mathf.Deg2Rad));
            float Vy = Vz * Mathf.Sin(LaunchAngle * Mathf.Deg2Rad);
            float Vx = Vz * Mathf.Cos(LaunchAngle * Mathf.Deg2Rad);
            text2.text = "vz: " + Vz.ToString() + " vy: " + Vy.ToString() + " vx: " + Vx.ToString();

            Vector3 localVelocity = new Vector3(0f, Vy, Vx);
            Vector3 globalVelocity = transform.TransformDirection(localVelocity);


            rigid.velocity = globalVelocity;
            bTargetReady = true;

            if (isSlowMotion) timeManager.slowMotion();
        }

球的第一位置

在二维运动之后,它被击中在目标之前。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-14 09:40:25

我用下面的代码修改了前3行。问题解决了。

代码语言:javascript
复制
    Vector3 projectileXZPos = transform.position;
    Vector3 targetXZPos = TargetObjectTF.position;
    float dist = Vector3.Distance(projectileXZPos, targetXZPos);
    transform.LookAt(targetXZPos);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60221450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档