子弹不向方向旋转

Posted

技术标签:

【中文标题】子弹不向方向旋转【英文标题】:Bullet not rotating in direction 【发布时间】:2018-12-04 07:51:36 【问题描述】:

我在 Unity 中有这个方向:

direction = bullet01.transform.position - this.transform.position;

方向是Vector2。

问题是我的子弹没有朝它飞行的方向看。

这是我的子弹:

public void SetDirection (Vector2 direction)

    //set the direction normalized, to get an unit vector
    _direction = direction.normalized;


// Update is called once per frame
void Update () 
    //get the bullet's current position
    Vector2 position = transform.position;

    position += _direction * speed * Time.deltaTime;

    //update the bullet's position
    transform.position = position;

    //this is the top right point of the screen
    Vector2 max = Camera.main.ViewportToWorldPoint(new Vector2(1, 1));

    //if the bullet went outside the screen on the top, then destroy the bullet
    if (transform.position.y > max.y) 
        PlayerControl.bulletPool.ReturnInstance(gameObject);
    

【问题讨论】:

【参考方案1】:

尝试像这样更改您的SetDirection

public void SetDirection (Vector2 direction)

    //set the direction normalized, to get an unit vector
    _direction = direction.normalized;

    float angle = Mathf.Atan2(_direction.y, _direction.x) * Mathf.Rad2Deg;
    transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);

【讨论】:

好的。子弹现在指向错误的方向。它们应该向左旋转 90 度。 transform.rotation = Quaternion.AngleAxis(90 + angle, Vector3.forward); 我将 90 更改为 270。现在可以使用了。:) 谢谢老兄,你拯救了我的一天!

以上是关于子弹不向方向旋转的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D制作简易坦克旋转发射子弹

弹丸/子弹方向 Cocos2d

如何根据玩家的方向偏移子弹对象

在pygame中向鼠标方向射击子弹

子弹头车轮落后和错误的底盘俯仰方向

子弹物理和 OpenGL 将方向转换为前、上和右