Avatar billede BenedikteJ Nybegynder
07. oktober 2011 - 22:31 Der er 8 kommentarer og
1 løsning

JavaScript til C#

Jeg har nogle JavaScripts jeg skal have lavet om til c#, men da jeg ikke har den store indsigt i JS finder jeg det lidt svært.
Så er der nogle der kan hjælpe?

ConstructBoundary:

var mapAsset : TextAsset;
var blockPrefab : Transform;
var pelletPrefab : Transform;
var superPrefab : Transform;

function Awake () {
    var map = mapAsset.text.Split ("\n"[0]);
    var v = new Vector3 ();
    v.y = 1.0;
    var j_off = map.length / 2.0;
    for (var j = 0; j < map.length; j ++) {
        v.z = (map.length - j - j_off - 1) * 2;
        var i_off = map[j].length / 2.0;
        for (var i = 0; i < map[j].length; i ++) {
            v.x = (i - i_off) * 2 + 1;
            if (map[j][i] == "X") {
                var inst = Instantiate (blockPrefab, v, Quaternion.identity);
                inst.transform.parent = transform;
            } else if (map[j][i] == ".") {
                Instantiate (pelletPrefab, v, Quaternion.identity);
            } else if (map[j][i] == "O") {
                Instantiate (superPrefab, v, Quaternion.identity);
            }
        }
    }
}


EatPellet:

var scoreDisplay : GUIText;
var smallPelletScore = 10;
var superPelletScore = 100;
private var score = 0;

function Update () {
    scoreDisplay.text = "Score: " + score;
}

function OnTriggerEnter (other : Collider) {
    if (other.name == "BasicPellet(Clone)") {
        score += smallPelletScore;
    } else if (other.name == "SuperPellet(Clone)") {
        score += superPelletScore;
    }
    Destroy (other.gameObject);
}


GhostController:

var howLong = 1.0;
var howFast = 8.0;
private var nextUpdate = 0.0;
private var direction : Vector3;

function Update () {
    if (Time.time > nextUpdate) {
        nextUpdate = Time.time + (Random.value * howLong);
        direction = Random.onUnitSphere;
        direction.y = 0;
        direction.Normalize ();
        direction *= howFast;
        direction.y = 1.5 - transform.position.y;
    }
    var controller = GetComponent(CharacterController);
    controller.Move(direction * Time.deltaTime);
}


DragRigidbody:

var spring = 50.0;
var damper = 5.0;
var drag = 10.0;
var angularDrag = 5.0;
var distance = 0.2;
var attachToCenterOfMass = false;

private var springJoint : SpringJoint;

function Update ()
{
    // Make sure the user pressed the mouse down
    if (!Input.GetMouseButtonDown (0))
        return;

    var mainCamera = FindCamera();
       
    // We need to actually hit an object
    var hit : RaycastHit;
    if (!Physics.Raycast(mainCamera.ScreenPointToRay(Input.mousePosition),  hit, 100))
        return;
    // We need to hit a rigidbody that is not kinematic
    if (!hit.rigidbody || hit.rigidbody.isKinematic)
        return;
   
    if (!springJoint)
    {
        var go = new GameObject("Rigidbody dragger");
        body = go.AddComponent ("Rigidbody");
        springJoint = go.AddComponent ("SpringJoint");
        body.isKinematic = true;
    }
   
    springJoint.transform.position = hit.point;
    if (attachToCenterOfMass)
    {
        var anchor = transform.TransformDirection(hit.rigidbody.centerOfMass) + hit.rigidbody.transform.position;
        anchor = springJoint.transform.InverseTransformPoint(anchor);
        springJoint.anchor = anchor;
    }
    else
    {
        springJoint.anchor = Vector3.zero;
    }
   
    springJoint.spring = spring;
    springJoint.damper = damper;
    springJoint.maxDistance = distance;
    springJoint.connectedBody = hit.rigidbody;
   
    StartCoroutine ("DragObject", hit.distance);
}

function DragObject (distance : float)
{
    var oldDrag = springJoint.connectedBody.drag;
    var oldAngularDrag = springJoint.connectedBody.angularDrag;
    springJoint.connectedBody.drag = drag;
    springJoint.connectedBody.angularDrag = angularDrag;
    var mainCamera = FindCamera();
    while (Input.GetMouseButton (0))
    {
        var ray = mainCamera.ScreenPointToRay (Input.mousePosition);
        springJoint.transform.position = ray.GetPoint(distance);
        yield;
    }
    if (springJoint.connectedBody)
    {
        springJoint.connectedBody.drag = oldDrag;
        springJoint.connectedBody.angularDrag = oldAngularDrag;
        springJoint.connectedBody = null;
    }
}

function FindCamera ()
{
    if (camera)
        return camera;
    else
        return Camera.main;
}


FPSWalker:

var speed = 6.0;
var jumpSpeed = 8.0;
var gravity = 20.0;

private var moveDirection = Vector3.zero;
private var grounded : boolean = false;

function FixedUpdate() {
    if (grounded) {
        // We are grounded, so recalculate movedirection directly from axes
        moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
        moveDirection = transform.TransformDirection(moveDirection);
        moveDirection *= speed;
       
        if (Input.GetButton ("Jump")) {
            moveDirection.y = jumpSpeed;
        }
    }

    // Apply gravity
    moveDirection.y -= gravity * Time.deltaTime;
   
    // Move the controller
    var controller : CharacterController = GetComponent(CharacterController);
    var flags = controller.Move(moveDirection * Time.deltaTime);
    grounded = (flags & CollisionFlags.CollidedBelow) != 0;
}

@script RequireComponent(CharacterController)


TimedObjectDestructor:

var timeOut = 1.0;
var detachChildren = false;

function Awake ()
{
    Invoke ("DestroyNow", timeOut);
}

function DestroyNow ()
{
    if (detachChildren) {
        transform.DetachChildren ();
    }
    DestroyObject (gameObject);
}
Avatar billede olebole Juniormester
08. oktober 2011 - 03:22 #1
<ole>

JavaScript er det nu ikke helt. Hvor har du koden fra?

/mvh
</bole>
Avatar billede BenedikteJ Nybegynder
08. oktober 2011 - 11:58 #2
Okay, ja jeg er ikke klog udi det - de står bare markeret som JS.

Det er et Unity spil de er lavet i.
Avatar billede olebole Juniormester
08. oktober 2011 - 16:33 #3
Jeg har nada idé om, hvad 'et Unity spil' er for noget - men koden kan ikke afvikles som JavaScript i en browser
Avatar billede BenedikteJ Nybegynder
08. oktober 2011 - 16:38 #4
Det ved jeg det ikke kan.
Det er kode til et spil lavet i game enginen Unity.
Avatar billede olebole Juniormester
08. oktober 2011 - 16:50 #5
Så kræver det med andre ord, man er inde i programmeringssproget i en eller anden game engine, som hedder Unity - og kan skrive C#. Du skal nok være mere end heldig for at finde sådan en person i denne kategori  =)
Avatar billede heinzdmx Nybegynder
08. oktober 2011 - 23:24 #6
Generelt vil jeg sige at det noget af omskrivningen består i at ændre:

varname : varclass


til

varclass varname;


Et eksempel:
distance : float;
//bliver til
float distance;



Men ja, det er vist ikke den rigtige kategori at placere det.
Avatar billede BenedikteJ Nybegynder
08. oktober 2011 - 23:27 #7
Jeg beklager hvis det er det placeret det forkerte sted. Jeg synes ikke altid det er lige let at få placeret tingene korrekt når de dækker flere områder som f.eks. det her, så ja det beklager jeg.

Tak heinzdmx, det var nyttigt. Hvis du vil, kan du smide et svar, for det er nok det nærmeste jeg kommer løsningen her.
Avatar billede heinzdmx Nybegynder
08. oktober 2011 - 23:44 #8
Opret den i Programmering/C# og smid et svar her med et link til den nye tråd, så kan vi afgøre point på den tråd ;)
Avatar billede BenedikteJ Nybegynder
09. oktober 2011 - 10:40 #9
Det er hermed gjort, tak.
Ny tråd: http://www.eksperten.dk/spm/948882
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester