【问题标题】:CS1503: Argument 3: cannot convert from 'double' to 'UnityEngine.Quaternion' HELP! unity 2D c#CS1503:参数 3:无法从“double”转换为“UnityEngine.Quaternion”帮助! unity 2D c#
【发布时间】:2021-01-17 07:30:08
【问题描述】:
        //pew pew
        Vector3 mousePosition = Input.mousePosition;
        mousePosition = Camera.main.ScreenToWorldPoint(mousePosition);

        Vector2 direction = new Vector2(mousePosition.x - transform.position.x, mousePosition.y - transform.position.y);
        var rad = Math.Atan2(direction.y, direction.x);
        var deg = rad * (180 / Math.PI);
        Debug.Log(deg);
        Instantiate(bulletprefab, firePoint.position, deg);

嗨!基本上,我试图向鼠标的方向发射子弹,但找不到任何我能理解的答案。我是初学者。

【问题讨论】:

  • 我知道为什么它说统一 3d,我指定 2d..
  • 可能显示您的导入和以前的代码(如果有)并附加整个错误跟踪,哪一行代码会产生错误?
  • 好吧 deg 是一个数字而不是 vector2... 正如它所说的那样。
  • "unity3d" 是 Unity 所有事物的标签。 :)

标签: c# unity3d math


【解决方案1】:

您正在将单个 floatdeg 传递给 Instantiate(Transform, Vector3, Quaternion)

Instantiate(bulletprefab, firePoint.position, deg);

这里需要旋转 Quaternion 作为第三个参数!

由于这应该是 2D 的,这意味着您正在搜索在全局 Z 轴上围绕 deg 度数的旋转。现在有多种方法可以得到它。你可以例如使用Quaternion.Euler

Instantiate(bulletprefab, firePoint.position, Quaternion.Euler(Vector3.forward * deg));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多