Вы уже учитываете направление ствола. Вам просто нужно изменить направление ствола при перемещении.
Один из способов сделать это - установить непосредственно:
// Update is called once per frame
void Update()
{
dirX = CrossPlatformInputManager.GetAxis("Horizontal");
if (dirX !=0)
{
barrel.up = Vector3.right * Mathf.Sign(dirX);
}
if (CrossPlatformInputManager.GetButtonDown("Jump"))
Jump();
if (CrossPlatformInputManager.GetButtonDown("Fire1"))
Fire();
}
Если ствол является дочерним элементом игрока объект, затем изменяя вращение персонажа, так что направление ствола в правильном направлении также будет работать. В этом вопросе недостаточно информации, чтобы знать наверняка, но, возможно, использование Quaternion.LookRotation
для установки поворота персонажа так будет работать:
// Update is called once per frame
void Update()
{
dirX = CrossPlatformInputManager.GetAxis("Horizontal");
if (dirX !=0)
{
Vector3 newPlayerForward = Vector3.forward * Mathf.Sign(dirX);
transform.rotation = Quaternion.LookRotation(newPlayerForward, Vector3.up);
}
if (CrossPlatformInputManager.GetButtonDown("Jump"))
Jump();
if (CrossPlatformInputManager.GetButtonDown("Fire1"))
Fire();
}