我正在研究一个自上而下的概念,枪围绕着玩家旋转,并根据你的十字准线所在的一边翻转(类似于ZERO Sievert)。我试图让我的子弹精灵在射击时相对于我的玩家武器有正确的旋转。
下面是我如何在射击脚本中示例化子弹,它以正确的方式发射,但精灵本身没有正确旋转。
void Shoot()
{
GameObject bullet = Instantiate(bulletPrefab, firingPoint.position, firingPoint.rotation);
Rigidbody2D rb = bullet.GetComponent<Rigidbody2D>();
rb.AddForce(firingPoint.right * bulletForce, ForceMode2D.Impulse);
}
而在我的武器处理脚本中,这是我对武器旋转的实现,我现在翻转武器y比例来纠正精灵。
private void FixedUpdate()
{
RotateWeapon();
if (crosshair.transform.position.x < 0)
{
FlipWeapon();
}
}
void RotateWeapon()
{
float AngleRad = Mathf.Atan2(crosshair.transform.position.y - currentWeapon.transform.position.y, crosshair.transform.position.x - currentWeapon.transform.position.x);
float AngleDeg = (180 / Mathf.PI) * AngleRad;
currentWeapon.transform.rotation = Quaternion.Euler(0, 0, AngleDeg);
}
void FlipWeapon()
{
currentScale = transform.parent.localScale;
currentScale.y *= -1;
currentWeapon.transform.localScale = currentScale;
}
我目前在如何实现这一点上停滞不前,因为我遇到的大多数资源的自上而下射击有球员转身到一个完整的360度,我的球员只面对左或右,武器本身只有180度的运动范围内的任何一方之前,它的设置翻转。
1条答案
按热度按时间oxiaedzo1#
也许您可以尝试添加一个偏移量,这样当您示例化该项目符号时,它将看起来像这样:
这里的offset是一个旋转的x y z坐标,所以你会想在z坐标上旋转它(尝试所有的方法,直到你找到正确的),并旋转它-90度或90度。你可能需要旋转它180度,但不要使用270,而要使用-90。相信我,这将有助于你以后的编码。同时确保将offset设置为一个变量:
!请记住您可以更改x y z坐标!