2015-10-06 91 views
0

我正在尝试开发一种基于射手旋转角度实例化“射击”的简单拍摄机制。我的问题在于即使射手面向0 *,射击角度为45 *(这是我猜测问题的原因,因为当射手以45 *为导向时,射门以精确射击90 *)。以精确角度拍摄弹丸

射击角(0,0,0)

enter image description here

射击角(0,0,45)

enter image description here

注意 - 球总是从黑色扁平圆柱体的中心发射。

所需的代码:

public class ShotMoveScript : MonoBehaviour { 
    public static float xForce; 
    public Transform shott; 
    void Update() { 
     if(Input.GetKey(KeyCode.Q)) 
     { 
      transform.Rotate(Vector3.forward, 5f); 
     } 

     if(Input.GetKey(KeyCode.E)) 
     { 
      transform.Rotate(Vector3.forward, -5f); 
     } 

     if(Input.GetKey(KeyCode.Space)) 
     { 
      xForce += 0.2f; 
     } 

     if(Input.GetKeyUp(KeyCode.Space)) 
     { 
      Instantiate(shott, transform.position, transform.rotation); 
     } 

    } 
} 

脚本连接到球,其被实例化:

public class MovementScript : MonoBehaviour { 
    void Update() { 
     Rigidbody2D rb; 
     rb = GetComponent<Rigidbody2D>(); 
     rb.gravityScale = 0.8f; 
     transform.Translate(new Vector3(1,1,0) * ShotMoveScript.xForce * Time.deltaTime, Space.Self); 
    } 
} 
+4

嗨,你可以发布你的代码样本吗? –

+0

对不起,我忘了,只是一秒 –

+0

@RussClarke加入了 –

回答

1

第三个参数旋转(见reference)实例化时,你旋转球。 之后,您应用指向(1,1)的矢量,以便球将沿着该方向相对于其当地旋转移动

要么通过Quaternion.identity作为第三个参数Instantiate方法或沿(1,0)方向移动球。

+0

Quaternion.identity并没有解决问题。无论射手的旋转角度如何,它现在总是以45 *角度拍球。 沿着1,0,0移动球也没有帮助。但是我通过沿着0,1,0移动它,几乎得到了我需要的。现在发生的事情是在0 *时,球发射90 *和270 *球发射0 *。 –

+0

Idk为什么,但1,0,0现在完美。谢谢。 –

+0

@AkashAggarwal也许你在重新编译之前运行了Unity,以及你的最新变化。这有时会发生。 – Skyblade