我正在尝试开发一种简单的射击机制,该机制根据射击者的旋转角度实例化“射击”。我的问题是,即使射手的角度为0 *,射击角度也为45 *(这是我猜的问题,因为当射手的角度为45 *时,射击角度精确90 *)。
射角(0,0,0)
射角(0,0,45)
注意-球始终从黑色扁平圆柱物体的中心发射。
要求的代码:
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);
}
}
使用第三个参数旋转实例化球时,旋转球(请参阅参考资料)。之后,应用指向(1,1)的Vector,这样球将相对于其局部旋转沿该方向移动。
将Quaternion.identity作为第三个参数传递给Instantization方法,或沿(1、0)方向移动球。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句