Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: Joawin en Septiembre 06, 2015, 01:21:42 PM

Título: Problema al lanzar y colisionar un proyectil
Publicado por: Joawin en Septiembre 06, 2015, 01:21:42 PM
Buenas, En mi juego (2D) posees una ballesta y cuando le das a disparar sale una flecha. Hasta ahí todo bien, pero la flecha no siempre va donde estás disparando, (izquierda o derecha) suele ir casi siempre a la izquierda así que probé a cambiar el código por el siguiente pero no va, la flecha no sale disparada y se queda paradaCódigo:
using UnityEngine;
using System.Collections;

public class Arma : MonoBehaviour {
 
 public Rigidbody flecha;
 private int speed;


 void Disparar () {

 }

 // Use this for initialization
 void Start () {
  this.speed = 5;
 }
 
 // Update is called once per frame
 void Update () {
  if (Input.GetButtonDown("Fire1")) {
   Rigidbody flechaC = (Rigidbody) Instantiate(flecha, transform.position, transform.rotation);
   flechaC.velocity = transform.forward  speed  Time.deltaTime;
  }
 }
}
Además, quiero que la flecha colisione para que cuando toque a un enemigo le reste vida.
Título: Problema al lanzar y colisionar un proyectil
Publicado por: iRobb en Septiembre 06, 2015, 02:00:10 PM
De entrada deberías instanciar un prefab. Veo que instancias flecha que es solo un rigidbody, sin collider y además disparas la flecha con velocity en el update con deltatime. Crea un objeto flecha, ponle un rigidbody y un collider capsule mejor.Pon el disparo de la flecha en una función void FixedUpdate, no update.Para dispararla, no utilices time.deltatime, ponle un Vector3 a velocity fijo. O sea velocity = transform.forward * speed; solamenteY estás moviendo el flecha en la dirección donde apunta la la clase arma, que entiendo que es lo correcto, o no? Donde apunta arma? 
Por otro lado, mírate que en vez de lanzarlo con velocity, lánzalo con un addforce. Te será mucho más realista, sobretodo siendo una flecha. Recuerda ponerle masa, muuuy pequeña.