Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Script para moverse en relación a la rotacion

Iniciado por luis albert einstein, Abril 07, 2016, 06:03:35 PM

Tema anterior - Siguiente tema
Abril 07, 2016, 06:03:35 PM Ultima modificación: Enero 01, 1970, 01:00:00 AM por luis albert einstein
hola, antes que nada gracias por la ayudabueno pues sucede que quiero que mi objeto rote verticalmente con el mouse y lo hace, pero también quiero que cuando rote y al presionar la tecla de avanzar que es "W" avance en relación a su rotación pero ahí esta el problema, no lo consigo.aqui esta mi script.****************************************************************************using UnityEngine;
using System.Collections;
public class movCapsula : MonoBehaviour {    public float velocidad;
    public float sensivilidad;
    public float jumpForce;
    private Rigidbody rigid;
    void Awake () {
        rigid = GetComponent<Rigidbody>();
    }
    
    // Update is called once per frame
    void FixedUpdate () {
        if (Input.GetKey (KeyCode.W)) {
            rigid.velocity = new Vector3 (rigid.velocity.x, rigid.velocity.y, velocidad);
        }
        if (Input.GetKey (KeyCode.S)) {
            rigid.velocity = new Vector3 (rigid.velocity.x, rigid.velocity.y, -velocidad/1.5f);
        }
        if (Input.GetKey (KeyCode.D)) {
            rigid.velocity = new Vector3 (velocidad/1.75f, rigid.velocity.y, rigid.velocity.z);
        }
        if (Input.GetKey (KeyCode.A)) {
            rigid.velocity = new Vector3 (-velocidad/1.75f, rigid.velocity.y, rigid.velocity.z);
        }
        if (Input.GetKeyDown (KeyCode.Space)) {
            rigid.AddForce (Vector3.up * jumpForce);
        }
        transform.Rotate(new Vector3(0,Input.GetAxis("Mouse X")*sensivilidad,0));
        rigid.rotation = this.transform.rotation;
    }
}
**********************************************************************************************************Una teoría que tengo es que la direccion de la velocidad del rigidbody es relativa a la escena y no al objeto que tiene el script y si es el caso no se que funcion usar.Y ya intente con transform.translate y si funciona pero no me parece la mejor opcion ya que aveces suele saltarse collisiones.

Abril 07, 2016, 06:20:38 PM #1 Ultima modificación: Abril 07, 2016, 06:21:12 PM por DavidV
Lo que pasa con las fuerzas físicas es que no se mueven en el espacio local del objeto que lleva el Script, al menos que le especifiques lo contrario. Pon en lugar de "New vector3": transform.TransformVector(x, y, z); 

Estudiante Ing. Sistemas 



Abril 07, 2016, 06:31:40 PM #2 Ultima modificación: Enero 01, 1970, 01:00:00 AM por luis albert einstein
ahora funciona de una forma muy rara pero creo que es mas acertada,  veré de que manera lo puedo usar, gracias

Etiquetas: