Archivo de la categoría: Unity 3D

Unity 3D: Movimiento simple con teclado

El siguiente código hará que el GameObject que lo contenta pueda moverse a con las teclas de movimiento habituales del teclado:

Versión 1:
El GameObject girará en cualquier momento ( como un robot )

using UnityEngine;
using System.Collections;

public class A2_MovementControl : MonoBehaviour
{
    public float moveSpeed = 10f;
    public float turnSpeed = 50f;
    
    
    void Update ()
    {
        if(Input.GetKey(KeyCode.UpArrow)){
            transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
        }
        
        if(Input.GetKey(KeyCode.DownArrow)){
            transform.Translate(-Vector3.forward * (moveSpeed-(moveSpeed/2)) * Time.deltaTime);
        }

        if(Input.GetKey(KeyCode.LeftArrow)){
            transform.Rotate(Vector3.up, -turnSpeed * Time.deltaTime);
        }
       
        if(Input.GetKey(KeyCode.RightArrow)){
            transform.Rotate(Vector3.up, turnSpeed * Time.deltaTime);
        }
    }
}

Versión 2:
El GameObject solo girará cuando se pulse el acelarador ( como en un coche )

using UnityEngine;
using System.Collections;

public class A2_MovementControl : MonoBehaviour
{
    public float moveSpeed = 10f;
    public float turnSpeed = 50f;
    
    
    void Update ()
    {
        if(Input.GetKey(KeyCode.UpArrow)){
            transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);

              if(Input.GetKey(KeyCode.LeftArrow)){
                transform.Rotate(Vector3.up, -turnSpeed * Time.deltaTime);
                }
        
            if(Input.GetKey(KeyCode.RightArrow)){
                transform.Rotate(Vector3.up, turnSpeed * Time.deltaTime);
                }
        }
        
        if(Input.GetKey(KeyCode.DownArrow)){
            transform.Translate(-Vector3.forward * (moveSpeed-(moveSpeed/2)) * Time.deltaTime);
        }
    }
}

Unity 3D: Rotación infinita

El siguiente código genera una rotación constante sobre el elemento que se aplique.

using UnityEngine;
using System.Collections;

public class A4_InfinitRotation : MonoBehaviour {

	public float rotationX = 0;
	public float rotationY = 0;
	public float rotationZ = 0;

    void Update () 
    {
        transform.Rotate (new Vector3 (rotationX, rotationY, rotationZ) * Time.deltaTime);
    }
}

Unity 3D: Hacer que un objeto mire a otro

Con el siguiente conseguiremos a través de la clase  LookAt, que el un elemento, como por ejemplo una cámara, esté mirando constantemente a un GameObject, como por ejemplo Player

using UnityEngine;
using System.Collections;

public class LookAt : MonoBehaviour
{
    public Transform target;
    
    void Update ()
    {
        transform.LookAt(target);
    }
}