使用RigidBody2D以用户指定的角度和速度进行弹丸运动

时间:2018-11-04 21:22:03

标签: c# unity3d rigid-bodies projectile

编辑: 我有一个0-90之间的滑块供用户选择角度,还有一个文本框供他们输入速度。我见过的所有vid都有人在使用自己的物理学,或者直接从“枪”或鼠标位置的角度检索角度,但这不是我所需要的。我已经知道它现在受到重力影响的位置,但是即使将速度设置为50,它也会在它产生后下降。我希望速度确定在产生球时的dx和dy值,但是它似乎没有发生。

我相信我可以通过GameObject.Find(“ AngleSlider”)。GetComponent()。angleSlider.value获取滑块值 并且如果我可以将其转换为float(?),则应该能够与文本框值进行类似的操作,所以我认为我很好,除非有人注意到此问题。

此初学者将提供任何帮助。谢谢!

编辑:根据要求,我添加了此部分具有atm的代码。这是我附着在加农炮上的击球器。提到的CannonBall是附加在炮弹预制件上的另一个脚本。我在CannonBall脚本中公开了未初始化的dx,dy和speed float。

public GameObject cannonBallPrefab;
public Transform shotPoint;

void Start () {

}

void Update () {

    if(Input.GetKeyDown("space"))
    {
        GameObject ball = Instantiate(cannonBallPrefab, shotPoint.position, Quaternion.identity);


        CannonBall ballMovement = ball.GetComponent<CannonBall>();
        ballMovement.dy = Mathf.Sin(GameObject.Find("AngleSlider").GetComponent<SliderHandler>().angleSlider.value * Mathf.Deg2Rad) * ballMovement.speed;
        ballMovement.dx = Mathf.Cos(GameObject.Find("AngleSlider").GetComponent<SliderHandler>().angleSlider.value * Mathf.Deg2Rad) * ballMovement.speed;
        Debug.Log("ball is spawned");
    }
}

0 个答案:

没有答案