Noticias

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

Problemas Raycast script c#

Iniciado por xcqoax, Septiembre 19, 2015, 06:31:12 PM

Tema anterior - Siguiente tema
saludos,  por cuestion de proyecto debo cambiar a c#,  como ven tengo un  script de JS, mi problema es que se me complica un poco el como podria cambiarlo a c#.  agradeceria si alguieme  apoyase con el codigo que he intentado hacer..var distancia : float =5;
var cubo: Transform;function Update()
{
var hit: RaycastHit;
if(Physics.Raycast(transform.position, Vector3.forward,hit,distancia))
   {
   if(hit.collider.gameObject.tag=="sofa");
      {
      cubo.gameObject.SetActive(false);
      }
   }
}-----------en c#-------------------using UnityEngine;
using System.Collections;public class NewBehaviourScript : MonoBehaviour
{    void Update ()
    {
        Transform cubo; // dado q en js se antepone la palabra "var", luego el nombre de la variable y de ultimo el tipo de variable, yo lo coloque de lamanera q se hace en c# el tipo de var y el nombre...
        RaycastHit hit;
        float distancia;
        if(Physics.Raycast(transform.position, Vector3.forward,out hit,distancia))
            {
                if(hit.collider.gameObject.tag=="cubo");   // mi problema es hacer que si la variable hot colisiona con el objeto q tiene la etiqueta cubo...
                {
                    cubo.gameObject.SetActive(false);
                }
            }
    }
}agradecere sus comentarios, de este modo ire aprendiendo a que si solo pido el script.. saludos


perdon, en el ejemplo de JS la etiqueta era cubo.  y para JS agregaba el objeto cubo con la sentencia "var : transform;"pero  en c#, de acuerdo a la sintaxis se maneja como "tipo variable-nombre de la variable"; por lo que yo coloque como Transform cubo; 

jajajajajajajajajajajaja como ver la conversacion entre un español y un chino jajajajajajajajajajael español (o chino, tampoco es que sea racista) pregunta ...
Cita de: xcqoax date=1442681097" data-ipsquote="" data-cite="xcqoax" class="ipsQuoteperdon, en el ejemplo de JS la etiqueta era cubo.  y para JS agregaba el objeto cubo con la sentencia "var : transform;"pero  en c#, de acuerdo a la sintaxis se maneja como "tipo variable-nombre de la variable"; por lo que yo coloque como Transform cubo;
parece un chiste jajajajajajajajajapero vamos, que lo que se entiende es que no tiene ni *** idea de lo que le has preguntado

para eso estoy aca  para aprender, en lugar de estar con las ofensas bien pudiese tener la amabilidad de ayudar porque al final en algun punto necesitaras ayuda de alguien y lo que menos esperaras es que se burlen de ti. muchas gracias por tu comentario algo fuera de lugar pero gracias. saludos

[quote author=xcqoax" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="25118" data-ipsquote-contentcommentid="111906 date=1442682241]para eso estoy aca  para aprender, en lugar de estar con las ofensas bien pudiese tener la amabilidad de ayudar porque al final en algun punto necesitaras ayuda de alguien y lo que menos esperaras es que se burlen de ti. muchas gracias por tu comentario algo fuera de lugar pero gracias. saludos[/quote]Ni caso, a lo nuestro. A ver, necesitar asignar la Transform del cubo, ya que está vacía. Cuando intentes acceder, pues problema.Lo más normal es que sea public y la asignes en el Editor a un cubo existente, el que quieras desactivar.

Tú codigo js, (forma simplificada sin el bloque 'class'):
var distancia : float =5;
var cubo: Transform;

function Update()
{
var hit: RaycastHit;
if(Physics.Raycast(transform.position, Vector3.forward,hit,distancia))
   {
   if(hit.collider.gameObject.tag=="sofa");
      {
      cubo.gameObject.SetActive(false);
      }
   }
}
Código js completo, con el bloque class:
#pragma strict

//Si no se especifica nada, todo es publico
class javascript extends MonoBehaviour{

var distancia : float =5;
var cubo: Transform;

function Update()
{
   var hit: RaycastHit;
   if(Physics.Raycast(transform.position, Vector3.forward,hit,distancia))
   {
      if(hit.collider.gameObject.tag=="sofa");
      {
            cubo.gameObject.SetActive(false);
      }
   }
}
}
 Código en cs:
using UnityEngine;
using System.Collections;

//Si no se especifica nada, todo es privado
public class cscript : MonoBehaviour {

//No se puede utilizar 'var' en variables fuera de una funcion
public float distancia = 5f;
public Transform cubo;



void Update() //Sustituir 'function' por 'void'
{
   RaycastHit hit; //No se asigna un valor(inicializar), no se puede utilizar 'var'
   if(Physics.Raycast(transform.position, Vector3.forward,out hit,distancia))
   {
      if(hit.transform.tag.Equals("sofa"));
      {
         cubo.gameObject.SetActive(false);
      }
   }
}
}
 

Etiquetas: