Noticias

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

Covertir Js a C#

Iniciado por ramunda, Agosto 06, 2016, 04:43:13 PM

Tema anterior - Siguiente tema
Buenas tardes
 
por favor , alguien que sepa tanto de c# como de Java me podria terminar de traducir este pequeño script?
 
:
 
He traducido casi todo ya que c# mas o menos lo controlo pero algo no he echo bien ya que me da errores en las últimas líneas;
 
El de JS es este:
 

#pragma strict
 
var restPosition : float = 0F;
var pressedPosition : float = 45F;
var flipperStrength : float = 10F;
var flipperDamper : float = 1F;
 
function Awake ()
{
GetComponent.<HingeJoint>().useSpring = true;
}
 
function Update ()
{
var spring : JointSpring = new JointSpring();

spring.spring = flipperStrength;
spring.damper = flipperDamper;

if (Input.GetButton("Fire1"))
   spring.targetPosition = pressedPosition;
else
   spring.targetPosition = restPosition;

GetComponent.<HingeJoint>().spring = spring;
GetComponent.<HingeJoint>().useLimits = true;
GetComponent.<HingeJoint>().limits.min = restPosition;
GetComponent.<HingeJoint>().limits.max = pressedPosition;
}

 
yo lo he intentado convertir....a este:
 

using UnityEngine;
using System.Collections;
public class Paddleh : MonoBehaviour {
 
public float restPosition = 0F;
public float pressedPosition = 45F;
public float flipperStrength = 10F;
public float flipperDamper = 1F;
 
void  Awake (){
   GetComponent<HingeJoint>().useSpring = true;
}
 
void  Update (){
   JointSpring spring = new JointSpring();
   spring.spring = flipperStrength;
   spring.damper = flipperDamper;
   if (Input.GetButton("Fire1"))
      spring.targetPosition = pressedPosition;
   else
      spring.targetPosition = restPosition;
   GetComponent<HingeJoint>().spring = spring;
   GetComponent<HingeJoint>().useLimits = true;
   GetComponent<HingeJoint>().limits.min = restPosition;
   GetComponent<HingeJoint>().limits.max = pressedPosition;
}
}

 
 
 
pero obtengo errores en las lineas:
 
 
 

GetComponent<HingeJoint>().limits.min = restPosition;
GetComponent<HingeJoint>().limits.max = pressedPosition;
Errores:
error CS1612: Cannot modify a value type return value of `UnityEngine.HingeJoint.limits'. Consider storing the value in a temporary variable
 
 error CS1612: Cannot modify a value type return value of `UnityEngine.HingeJoint.limits'. Consider storing the value in a temporary variable

 
Gracias de antemano.
 
 

Agosto 06, 2016, 05:48:57 PM #1 Ultima modificación: Agosto 07, 2016, 09:24:18 AM por pioj
Tienes que guardar las variables en un "constructor",no se si se llama asi xD.
 
Al igual que no puedes hacer esto
 

transform.position.y = 5.0f
//y tienes que hacer esto
transform.position = new Vector3(transform.position.x,5.0f,transform.position.z);
//Pues tienes que hacer esto
JointLimits limits = GetComponent<HingeJonts>().limits;
limits.min = ;
limits.max = 90;
GetComponent<HingeJonts>().limits = limits;

 
No puedes cambiar las variables del constructor directamente ,  tienes que crear un constructor nuevo cambiarlas y asignarlo;
 
No me puedo explicar mejor xD no soy programador y tampoco te puedo decir el porque ni se si se llaman constructors, me parece que es por seguridad pero no se.A ver si contesta algun programador que te lo pueda explicar mejor.
 
Busca en la ayuda de unity sobre los JointLimits, te pone el mismo ejemplo.
 
 

Cita de: hammer date=1470498537Tienes que guardar las variables en un "constructor",no se si se llama asi xD.
   
   
      Al igual que no puedes hacer esto
   
   
      transform.position.y = 5.0f
   
   
      y tienes que hacer esto
   
   
      transform.position = new Vector3(transform.position.x,5.0f,transform.position.z);
   
   
      Pues tienes que hacer esto
   
   
      JointLimits limits = GetComponent<HingeJonts>().limits;
   
   
      limits.min = 0;
   
   
      limits.max = 90;
   
   
      GetComponent<HingeJonts>().limits = limits;
   
   
      No puedes cambiar las variables del constructor directamente ,  tienes que crear un constructor nuevo cambiarlas y asignarlo;
   
   
      No me puedo explicar mejor xD no soy programador y tampoco te puedo decir el porque ni se si se llaman constructors, me parece que es por seguridad pero no se.A ver si contesta algun programador que te lo pueda explicar mejor.
   
   
      Busca en la ayuda de unity sobre los JointLimits, te pone el mismo ejemplo.
   
   
       
   


Muchas gracias hammer, intentare probar cosillas aver si lo consigo.
 
Gracias

Etiquetas: