【问题标题】:Change projectile angle改变弹丸角度
【发布时间】:2019-07-31 05:58:37
【问题描述】:

我正在尝试为我的游戏增加准确性。目前,我的播放器将始终直接向前射击(指向鼠标光标)。我想将发射角偏移 x 度。

我的触发脚本目前如下所示:

nextFire = Time.time + bulletConfig.TimeBetweenShots;
var offset = new Vector3(0, 0, 0);
var grid = GameObject.FindObjectOfType<Grid>();
var proj = Instantiate(projectile, transform.position, Quaternion.identity, grid.transform);
proj.transform.position = transform.position + offset;
proj.transform.rotation = transform.rotation;
print(proj.transform.rotation);

var controller = proj.GetComponent<BulletController>();
if (controller != null)
{
    controller.Fire(bulletConfig);
}

Destroy(proj, bulletConfig.DestroyTime);

我的问题的核心是我不知道如何将度数添加到向量3,没有一些复杂的三角函数。

有什么想法吗?

【问题讨论】:

  • 来自docs“要旋转对象,请使用Transform.Rotate。” - 以欧拉角为参数
  • @UnholySheep,这就是我正在寻找的答案。您想创建一个答案,以便我接受吗?谢谢!

标签: c# unity3d angle


【解决方案1】:

如评论中所述:

Transform.rotate 状态的文档:“要旋转对象,请使用 Transform.Rotate。”

修改您的示例如下所示:

// -- snipped for brevity
var proj = Instantiate(projectile, transform.position, Quaternion.identity, grid.transform);
proj.transform.position = transform.position + offset;
proj.transform.rotation = transform.rotation;
// Using the second overload of Transform.Rotate
float exampleOffsetAngle = 1.0f;
proj.transform.Rotate(exampleOffsetAngle, 0.0f, 0.0f);
print(proj.transform.rotation);
// -- snipped for brevity

其他重载的更多示例和用法请参考官方文档:https://docs.unity3d.com/ScriptReference/Transform.Rotate.html

【讨论】:

    【解决方案2】:
    Float degrees = 5;
    Quaternion q = Quaternion.AngleAxis(Vector3.right, degrees);
    proj.transform.rotation = q * proj.transform.rotation;
    // Alternatively, if you have a vector vecToRotate:
    vecToRotate = q * vecToRotate;
    

    这会将其向上移动 5 度。使用 -5 向下。将Vector3.right 以外的其他内容用于其他方向。

    【讨论】:

      【解决方案3】:

      三角函数并不十分复杂,尤其是当您有一个可以为您进行计算的转换对象时。 “增加度数”相当于使用Rotate 函数旋转你的弹丸的变换。

      【讨论】:

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