Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

316
Visualizações
¿Cómo puedo hacer que mis balas de cuerpo rígido disparen en línea recta sin importar el movimiento del mouse?

Estoy haciendo un juego 3D muy simple en Unity donde tengo este transbordador espacial que puedo moverme en el espacio alrededor de asteroides y puedo disparar cuando presiono/sostengo el botón del mouse. Estoy haciendo esto creando una instancia de una esfera en la posición de transformación del "Emisor" y luego simplemente aplicando una Fuerza hacia adelante a ese objeto de bala. Todo funciona bien, pero lo único que no me gusta y tampoco sé cómo solucionarlo es cómo las balas mantienen su posición al disparar y mover el mouse de izquierda a derecha, en lugar de mantener una línea perfectamente recta en todo momento. .

Así es como se ve cuando estoy disparando y moviendo mi cámara al mismo tiempo:

Captura de pantalla durante la captura

Aquí hay un gif para una mejor visualización.

En este momento parece que estoy orinando láseres, lo cual nunca es bueno. Intenté hacer que la velocidad de la bala fuera mucho más rápida, pero luego las balas se vuelven cada vez más difíciles de ver y no se ven tan bien.

Este es el código por el cual estoy disparando las balas:

 private void Fire() { GameObject bullet = Instantiate(laserPrefab); GameObject bullet2 = Instantiate(laserPrefab); Physics.IgnoreCollision(bullet.GetComponent<Collider>(), shuttleCollider.GetComponent<Collider>()); Physics.IgnoreCollision(bullet2.GetComponent<Collider>(), shuttleCollider.GetComponent<Collider>()); bullet.transform.position = laserEmitter.position; bullet2.transform.position = laserEmitter2.position; /*Vector3 rotation = bullet.transform.rotation.eulerAngles; Vector3 rotation2 = bullet2.transform.rotation.eulerAngles; bullet.transform.rotation = Quaternion.Euler(rotation.x, transform.eulerAngles.y, rotation.z); bullet2.transform.rotation = Quaternion.Euler(rotation2.x, transform.eulerAngles.y, rotation2.z);*/ bullet.GetComponent<Rigidbody>().AddForce(laserEmitter.forward * laserSpeed, ForceMode.Impulse); bullet2.GetComponent<Rigidbody>().AddForce(laserEmitter.forward * laserSpeed, ForceMode.Impulse); StartCoroutine(DestroyBulletAfterTime(bullet, bulletDeathTime, bullet2)); }

No se preocupe por las líneas comentadas, solo estaba jugando tratando de ver si puedo hacer que funcione. El tiro se comporta igual con o sin esas líneas comentadas.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Por supuesto, un sistema basado en proyectiles se comportará y se verá como un sistema de proyectiles.

Si desea un comportamiento láser, use un LineRenderer. Raycast donde debe terminar su línea láser (ya sea la distancia máxima del láser o el punto de golpear un objeto dentro del alcance).

Si no le gusta el aspecto "estático", cambie el material de LineRenderer a algo que cambie con el tiempo (busque sombreadores/efectos de LineRenderer).

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda