Unity Spain
Post Antiguos => General (Antiguo) => Mensaje iniciado 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.
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.