Как бы я приступил к реализации java-кода на c # и наоборот?

#java #c# #unity3d

#java #c# #unity3d

Вопрос:

Я пытаюсь создать игру на Unity, но Java в ней невозможно использовать, поэтому все готовые скрипты находятся на C #. Я хочу добавить кое-что в механику игры, что требует от меня изменения переменных и значений в скрипте, но я знаю, как это сделать только на java, так как же мне сделать так, чтобы они могли эффективно взаимодействовать?

Пример из c#:

     protected override void ComputeVelocity()
{
    Vector2 move = Vector2.zero;

    move.x = Input.GetAxis ("Horizontal");
    if (Input.GetButtonDown ("Jump") amp;amp; grounded) {
        velocity.y = jumpTakeOffSpeed;
    } else if (Input.GetButtonUp ("Jump"))
    {
        if (velocity.y > 0)
            velocity.y = velocity.y * .5f;
    }

    targetVelocity = move * maxSpeed;

}
}
  

и мой Java-код:

 public void keyPressed(KeyEvent e) 
{
    if(e.getKeyCode() == KeyEvent.VK_SHIFT)
    { 
        endTime = (System.currentTimeMillis() / 1000);
        timePassed = endTime - startTime; 
        if(timePassed >= 2)
        {   

            //try to set a time limit or something 

            velocity = overMaxVelocity;
            //set velocity to above usual max for dodgeTime 
            startTime = dodgeTime   (System.currentTimeMillis() / 1000);
        }


    }

}
  

Я пытаюсь сделать так, чтобы при нажатии shift скорость изменялась на большее значение, чем обычно, в течение небольшого времени, но я понятия не имею, с чего даже начать

Комментарии:

1. Java достаточно близка, чтобы большая часть этого имела смысл.. К сожалению, вам нужно сделать это на c#

2. Вам нужно будет изучить C #, о чем, я думаю, вы в любом случае не пожалеете.

Ответ №1:

Unity поддерживает только скрипты, написанные на C #. Раньше он также поддерживал версию JavaScript, которую они называли UnityScript, но теперь они перешли только на официальную поддержку C #. К счастью, C # действительно похож на Java, поэтому у вас не должно возникнуть особых проблем с переводом ваших скриптов на C #. Основной проблемой было бы изучение библиотеки Unity.

Ниже я написал некоторый код, который обновляет скорость объекта с помощью функций библиотеки Unity. В Unity есть множество встроенных способов помочь вам как разработчику, поэтому я бы порекомендовал учебные пособия на веб-сайте Unity, чтобы узнать больше о том, как с этим начать.

 public float speed = 2;
public float speedUpFactor = 2;

// Get the Rigidbody component attached to this gameobject
// The rigidbody component is necessary for any object to use physics)
// This gameobject and any colliding gameobjects will also need collider components
Rigidbody rb;
// Start() gets called the first frame that this object is active (before Update)
public void Start(){
    // save a reference to the rigidbody on this object
    rb = GetComponent<Rigidbody>();
}
}// Update() gets called every frame, so you can check for input here.
public void Update() {

    // Input.GetAxis("...") uses input defined in the "Edit/Project Settings/Input" window in the Unity editor.
    // This will allow you to use the xbox 360 controllers by default, "wasd", and the arrow keys.
    // Input.GetAxis("...") returns a float between -1 and 1
    Vector3 moveForce = new Vector3(Input.GetAxis ("Horizontal"), 0, Input.GetAxis("Vertical"));
    moveForce *= speed;

    // Input.GetKey() returns true while the specified key is held down
    // Input.GetKeyDown() returns true during the frame the key is pressed down
    // Input.GetKeyUp() returns true during the frame the key is released
    if(Input.GetKey(KeyCode.Shift)) 
    {
        moveForce *= speedUpFactor;
    }
    // apply the moveForce to the object
    rb.AddForce(moveForce);
}