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.
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