Hola! estoy programando un personaje que rote alrededor de un objeto,lo he conseguido con el rotate.Around,el problema es que no colisiona y me gustaria saber como lo hariais(por favor no me digais que añadiendo un box collider que no funciona).Mi idea es hacer la colision como el simple.Move,y he visto algo sobre una funcion llamada Quartenion pero no la entiendo muy bien,si alguien puede decirme lo que sea lo agradeceria.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Páginas1
#2
General (Antiguo) / [Solucionado]Objeto no encontrado
Febrero 09, 2016, 02:47:47 PM
*Como ya me lo temia,era una tonteria,consistia en crear otra variable en la 1ºscript var nombre : GameObject;y ediar el getcomponent en : nombre.gameObject.GetComponent,es una tonteria porque ya daba por sentado que la var stopShip lo cojeria del objeto,en fin.Hola!(otra vez),hoy he retomado Unity y se me ha presentado un problema que no consigo resolver,os pongo en situacion,he creado dos scripts,uno es el movimiento continuo hacia una direccion y otro es cuando el personaje colisiona con un cubo,loo que quiero hacer es que cuando el personaje colisione con el cubo la camara con el script del movimiento se desactive,y bueno lo he creado con el gameObject.GetComponent y me dice que no encuentra la variable y bla bla bla.Aqui os dejo las scripts://esta script desactiva en teoria el movimiento en una direccion.private var ship : Nave;//activate desactivate script
var stopShip : ResetLevel;//condition for disactivate the scriptfunction Start () {
ship = GetComponent(Nave);
stopShip = gameObject.GetComponent(ResetLevel);
}function Update () {
if(stopShip.stop == true)//La consola me señala esta linea y mire en el manual y todo parece correcto.
{
ship.enabled = !ship.enabled;
}
} //Esta script es al colisionar con el cubovar stop : boolean = false;function Start () {}function OnTriggerEnter (other:Collider) {
if(other.tag == "Reset")
{
stop = true;//aqui puse que se parase 1 segundo porque alomejor el codigo iba tan rapido que el jugador se destruia y por eso no encontraba la var pero no es por eso.
clone = Instantiate(explosion, transform.position, transform.rotation);
Destroy(gameObject);
}
} Seguramente sea una tonteria que no estoy viendo pero bueno,gracias.
var stopShip : ResetLevel;//condition for disactivate the scriptfunction Start () {
ship = GetComponent(Nave);
stopShip = gameObject.GetComponent(ResetLevel);
}function Update () {
if(stopShip.stop == true)//La consola me señala esta linea y mire en el manual y todo parece correcto.
{
ship.enabled = !ship.enabled;
}
} //Esta script es al colisionar con el cubovar stop : boolean = false;function Start () {}function OnTriggerEnter (other:Collider) {
if(other.tag == "Reset")
{
stop = true;//aqui puse que se parase 1 segundo porque alomejor el codigo iba tan rapido que el jugador se destruia y por eso no encontraba la var pero no es por eso.
clone = Instantiate(explosion, transform.position, transform.rotation);
Destroy(gameObject);
}
} Seguramente sea una tonteria que no estoy viendo pero bueno,gracias.
#3
General (Antiguo) / Arma gire con el cursor
Diciembre 27, 2015, 01:41:52 PM
Hola,me acabo de dar cuenta que esta duda planteada estaba en el foro equivocado hahaha.Pero en fin mi problema es el siguiente estoy haciendo un vehículo con una torreta encima la cosa es que tengo la script para que se mueva con el ratón peeero cuando giro el coche la torreta se gira con este lo cual hace que se descentre completamente la cámara con el centro de la torreta.¿Alguna idea?,gracias.//LA TORRETAvar horizontalSpeed : float = 4.9999;
var verticalSpeed : float = 4.9999;
function Start () {}function Update () {
var hrt : float = horizontalSpeed * Input.GetAxis("Mouse X");
var vrt : float = verticalSpeed * Input.GetAxis("Mouse Y");
transform.Rotate(0,vrt,hrt);
}
var verticalSpeed : float = 4.9999;
function Start () {}function Update () {
var hrt : float = horizontalSpeed * Input.GetAxis("Mouse X");
var vrt : float = verticalSpeed * Input.GetAxis("Mouse Y");
transform.Rotate(0,vrt,hrt);
}
#4
General (Antiguo) / Un objeto rote junto con la cámara
Diciembre 24, 2015, 02:09:14 PM
Hola,hoy se me ha presentado una pequeña dificultad que me está sacando de mis casillas.La cuestión es que he hecho un vehículo con un arma encima,solo me queda programar el hecho de que la metralleta se quede quieta en el centro del vehículo y rote junto con la cámara.He probado con las scripts por defecto,funciona...pero a medias,es decir el modelado se me deforma.He intentado encontrar información sobre cómo al mover el ratón,se ejecute la rotacion.Muchas gracias.
#5
General (Antiguo) / Evasión para el jugador
Diciembre 15, 2015, 05:40:34 PM
Hola,antes de nada he de agradecer toda esa ayuda por parte de la comunidad,gracias.Ahora a lo importante...Estoy intentando que el jugador evada los ataques del enemigo de una forma muy básica,esencialmente tengo un script en el cube que hace daño al jugador con un temporizador que cuando lo pulsas se queda desactivado el box collider durante x tiempo,pues por lo que vi desactivar el box collider no funciona es cierto?
#6
General (Antiguo) / Daño al "Player"
Diciembre 12, 2015, 02:13:27 PM
Buenos días,estaba programando una script de vida para que asi el jugador recibiese daño,lo probé una y otra vez iba directo al enemigo y parecia que funcionaba,pero cuando me quede parado para simular una situación en la que el jugador está observando el mapa para poder continuar,el enemigo venia pero no me quitaba vida fui probando y me di cuenta de que solo me hace daño cuando yo me muevo,lo cual es un problema porque ahora estaba programando un boss que arrojase lanzas y como que si te quedas quieto no te hacen nada,es más te lo podrias cargar sin moverte.Aqui el código:
static var vida :float = 250;//vida
var danoE : float;//daño enemigo normal
var danoB : float;//daño el 1ºboss
var danoT : float;//daño trampas y ambiente en general
var danoF : float;//daño del boss FINAL
var danoBB : float;//daño del 2ºboss
var danoBBB : float;//daño del 3ºboss
var danoTram : float;//dañotrampa
var danoproye : float;//daño proyectiles
var particula1 : GameObject;//Particula rayo
var Projectile2 : GameObject;//La magia de rayo
var iluminacion1 : GameObject;//Luz del jugador
var iluminacion2 : GameObject;//Luz del rayo
var iluminacion3 : GameObject;//Luz del rayo2
var jugadorragdoll : GameObject;//Jugador ragdollvar guiSkin : GUISkin;
var blackTexture : Texture2D;//DAÑOS
function OnTriggerStay(other : Collider){
if(other.tag=="enemy"){
vida -= danoE;
}
if(other.tag=="bboss"){
vida -= danoBB;
}
if(other.tag=="bbboss"){
vida -= danoBBB;
}
if(other.tag=="finalboss"){
vida -= danoF;
}
if(other.tag=="ambient"){
vida -= danoT;
}}function OnTriggerEnter(other : Collider){ if(other.tag=="proyectile"){
vida -= danoproye;
}
if(other.tag=="trap"){
vida -= danoTram;
}
if(other.tag=="boss"){
vida -= danoB;
}
}//MAGIA DE RAYOS
function Update () {
if(Input.GetKey(KeyCode.Mouse2)){
if(vida>0){
var instantiatedparticula1 : GameObject = Instantiate(particula1, transform.position, transform.rotation );
var instantiatedProjectile2 : GameObject = Instantiate(Projectile2, transform.position, transform.rotation );
var instantiatediluminacion1 : GameObject = Instantiate(iluminacion1, transform.position, transform.rotation );
var instantiatediluminacion2 : GameObject = Instantiate(iluminacion2, transform.position, transform.rotation );
var instantiatediluminacion3 : GameObject = Instantiate(iluminacion3, transform.position, transform.rotation );
animation.Play("magia");
vida -= 15;
}
}
if(vida <= 0){
vida=0;
var instantiatedjugadorragdoll : GameObject = Instantiate(jugadorragdoll, transform.position, transform.rotation );
Destroy(gameObject);
}
}//VIDA EN PANTALLA
function OnGUI ()
{
GUI.skin = guiSkin;
GUI.Label(new Rect(Screen.width - 130, Screen.height - 150, 200, 50), vida.ToString ("F0"));
}[/quote] Como se puede observar en la primera línea puse una static var para así probar y crear otra script en el cubo el cual mi "Player" va a recibir daño en la que tenía un OnTriggerStay y dentro VIDA.vida -= dano;Pero no lo consegui,ya no sé que hacer ¿una pequeña ayuda aunque sea?,muchas gracias.
#7
General (Antiguo) / Movimiento del vehículo
Septiembre 10, 2015, 03:06:15 PM
Bueno ahora estoy haciendo el movimiento de un vehículo muyyyy simple,el problema es que seguí tutoriales de scripting (estaban en c#) y la verdad es que no me funcionaban del todo bien,me explico.El vehículo se quedaba en el aire sin gravedad, si desactivo la gravedad salía volando,no se movia el coche,le puse fricción en 1(con un rigidbody de 10) y tampoco.Nose que falla busque informacion tanto en la comunidad inglesa como española y nada.Uso la versión 4.6.6f1,y hago lo siguiente: creo un cubo,cuatro cilindros(simulando el modelo de las ruedas) y cuantro gameobject's vacíos(los cuales tienen un wheelCollider),emparento los cilindros a los gameobject's(haciendo que los gameobject's sean padres de los cilindros) y añado a lo que se suponen que son ruedas el script "DetecWheelCol".Luego las ruedas las emparento a el cubo (haciendo que el cubo sea el padre,y este cubo tiene un box collider y un rigidbody por defecto con una masa de 10) y le añado la script de PlayerCar12.Aqui están los códigos que más se acercaban a lo que yo quiero y funcionaban a medias:PlayerCar12:using UnityEngine;
using System.Collections;public class PlayerCar12 : MonoBehaviour { public Vector3 centerOfMass = Vector3.zero;
public WheelCollider frontLeftWheel;
public WheelCollider frontRightWheel; public float speed = 100;
public float maxSteerAngle = 30; private bool hasWheelContact = false;
private float motorForce = 0; public void HasContact(){
hasWheelContact = true;
} // Use this for initialization
void Start () {
rigidbody.centerOfMass = centerOfMass;
}
// Update is called once per frame
void FixedUpdate () {
motorForce = Input.GetAxis ("Vertical") * speed;
if (hasWheelContact) {
frontLeftWheel.motorTorque = motorForce;
frontRightWheel.motorTorque = motorForce;
}
float rotation = Input.GetAxis ("Horizontal") * maxSteerAngle;
frontLeftWheel.transform.localEulerAngles = new Vector3 (0, rotation,0);
frontRightWheel.transform.localEulerAngles = new Vector3 (0, rotation, 0);
hasWheelContact = false;
}
} DetectWheelCol:using UnityEngine;
using System.Collections;public class DetectWheelCol : MonoBehaviour { private WheelCollider carWhell;
private WheelHit hit;
private bool isHit = false; // Use this for initialization
void Start () {
carWhell = this.collider as WheelCollider;
}
// Update is called once per frame
void FixedUpdate () {
isHit = carWhell.GetGroundHit (out hit);
if(isHit)
this.transform.parent.SendMessage("HasContact");
}
} Muchas graciasHe de añadir que este script no es mío.
using System.Collections;public class PlayerCar12 : MonoBehaviour { public Vector3 centerOfMass = Vector3.zero;
public WheelCollider frontLeftWheel;
public WheelCollider frontRightWheel; public float speed = 100;
public float maxSteerAngle = 30; private bool hasWheelContact = false;
private float motorForce = 0; public void HasContact(){
hasWheelContact = true;
} // Use this for initialization
void Start () {
rigidbody.centerOfMass = centerOfMass;
}
// Update is called once per frame
void FixedUpdate () {
motorForce = Input.GetAxis ("Vertical") * speed;
if (hasWheelContact) {
frontLeftWheel.motorTorque = motorForce;
frontRightWheel.motorTorque = motorForce;
}
float rotation = Input.GetAxis ("Horizontal") * maxSteerAngle;
frontLeftWheel.transform.localEulerAngles = new Vector3 (0, rotation,0);
frontRightWheel.transform.localEulerAngles = new Vector3 (0, rotation, 0);
hasWheelContact = false;
}
} DetectWheelCol:using UnityEngine;
using System.Collections;public class DetectWheelCol : MonoBehaviour { private WheelCollider carWhell;
private WheelHit hit;
private bool isHit = false; // Use this for initialization
void Start () {
carWhell = this.collider as WheelCollider;
}
// Update is called once per frame
void FixedUpdate () {
isHit = carWhell.GetGroundHit (out hit);
if(isHit)
this.transform.parent.SendMessage("HasContact");
}
} Muchas graciasHe de añadir que este script no es mío.
#8
General (Antiguo) / Activar componentes de otros objetos
Septiembre 01, 2015, 01:17:20 AM
Hola,soy nuevo en Unity3D y tengo una pequeña duda.¿Cómo podría activar componentes de otros objetos con scripts?Lo digo porque tengo un personaje en el cual quiero que al presionar click izquierdo ejecute una sola vez una animación y desactive un thirdperson controler.Basicamente y como aclaración estoy intentando hacer mi propio sistema de combate melee y esto es lo que me falta.¿Alguna idea,algún componente?Muchas Gracias
Páginas1