Помогите с переводом скрипта с JS на C#

Программирование на Юнити.

Помогите с переводом скрипта с JS на C#

Сообщение boro 12 дек 2011, 21:45

Привет всем.Народ у меня к вам просьба,я нашел скрипт для физики автомобиля но она на js,мне нужно его переписать на c#,с c# я знаком с а вот с js плохо.Кто может помогите пожалуйста перевести.Заранее спасибо.А вот и сам скрипт

Синтаксис:
Используется javascript
var FrontLeftWheel : WheelCollider;
var FrontRightWheel : WheelCollider;

// These variables are for the gears, the array is the list of ratios. The script
// uses the defined gear ratios to determine how much torque to apply to the wheels.
var GearRatio : float[];
var CurrentGear : int = 0;

// These variables are just for applying torque to the wheels and shifting gears.
// using the defined Max and Min Engine RPM, the script can determine what gear the
// car needs to be in.
var EngineTorque : float = 600.0;
var MaxEngineRPM : float = 3000.0;
var MinEngineRPM : float = 1000.0;
private var EngineRPM : float = 0.0;



function Start () {
        // I usually alter the center of mass to make the car more stable. I'ts less likely to flip this way.
        rigidbody.centerOfMass.y = -1.5;
}

function Update () {
       
        // This is to limith the maximum speed of the car, adjusting the drag probably isn't the best way of doing it,
        // but it's easy, and it doesn't interfere with the physics processing.
        rigidbody.drag = rigidbody.velocity.magnitude / 250;
       
        // Compute the engine RPM based on the average RPM of the two wheels, then call the shift gear function
        EngineRPM = (FrontLeftWheel.rpm + FrontRightWheel.rpm)/2 * GearRatio[CurrentGear];
        ShiftGears();

        // set the audio pitch to the percentage of RPM to the maximum RPM plus one, this makes the sound play
        // up to twice it's pitch, where it will suddenly drop when it switches gears.
        audio.pitch = Mathf.Abs(EngineRPM / MaxEngineRPM) + 1.0 ;
        // this line is just to ensure that the pitch does not reach a value higher than is desired.
        if ( audio.pitch > 2.0 ) {
                audio.pitch = 2.0;
        }

        // finally, apply the values to the wheels.     The torque applied is divided by the current gear, and
        // multiplied by the user input variable.
        FrontLeftWheel.motorTorque = EngineTorque / GearRatio[CurrentGear] * Input.GetAxis("Vertical");
        FrontRightWheel.motorTorque = EngineTorque / GearRatio[CurrentGear] * Input.GetAxis("Vertical");
               
        // the steer angle is an arbitrary value multiplied by the user input.
        FrontLeftWheel.steerAngle = 10 * Input.GetAxis("Horizontal");
        FrontRightWheel.steerAngle = 10 * Input.GetAxis("Horizontal");
}

function ShiftGears() {
        // this funciton shifts the gears of the vehcile, it loops through all the gears, checking which will make
        // the engine RPM fall within the desired range. The gear is then set to this "appropriate" value.
        if ( EngineRPM >= MaxEngineRPM ) {
                var AppropriateGear : int = CurrentGear;
               
                for ( var i = 0; i < GearRatio.length; i ++ ) {
                        if ( FrontLeftWheel.rpm * GearRatio[i] < MaxEngineRPM ) {
                                AppropriateGear = i;
                                break;
                        }
                }
               
                CurrentGear = AppropriateGear;
        }
       
        if ( EngineRPM <= MinEngineRPM ) {
                AppropriateGear = CurrentGear;
               
                for ( var j = GearRatio.length-1; j >= 0; j -- ) {
                        if ( FrontLeftWheel.rpm * GearRatio[j] > MinEngineRPM ) {
                                AppropriateGear = j;
                                break;
                        }
                }
               
                CurrentGear = AppropriateGear;
        }
}
boro
UNIт
 
Сообщения: 55
Зарегистрирован: 03 окт 2011, 10:57
Откуда: Киев

Re: Помогите с переводом скрипта с JS на C#

Сообщение TexeL 12 дек 2011, 22:50

Синтаксис:
Используется javascript
var FrontLeftWheel : WheelCollider;

Синтаксис:
Используется csharp
WheelCollider FrontLeftWheel;


с c# я знаком...


Так почему самому не сделать перевод ?
ИзображениеИзображение
Аватара пользователя
TexeL
UNITрон
 
Сообщения: 244
Зарегистрирован: 15 ноя 2009, 20:57
  • Сайт

Re: Помогите с переводом скрипта с JS на C#

Сообщение boro 12 дек 2011, 22:52

Я с js почти не понимаю
boro
UNIт
 
Сообщения: 55
Зарегистрирован: 03 окт 2011, 10:57
Откуда: Киев

Re: Помогите с переводом скрипта с JS на C#

Сообщение 666marat666 12 дек 2011, 23:32

Поищите в гугле: M2H C# to JS converter может поможет
Изображение

->Невозможно решить проблему на том же уровне, на котором она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.<-
Альберт Эйнштейн
Аватара пользователя
666marat666
UNIт
 
Сообщения: 139
Зарегистрирован: 04 авг 2010, 22:40
Откуда: Украина

Re: Помогите с переводом скрипта с JS на C#

Сообщение DbIMok 12 дек 2011, 23:42

такой вариант - билдим как обычно, открываем dll в reflector, сохраняем в cs. только там конечно все прелести юнитискрипта сделанного в boo
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Помогите с переводом скрипта с JS на C#

Сообщение TexeL 13 дек 2011, 06:23

DbIMok писал(а):такой вариант - билдим как обычно, открываем dll в reflector, сохраняем в cs. только там конечно все прелести юнитискрипта сделанного в boo

=))

http://www.m2h.nl/files/js_to_c.php
ИзображениеИзображение
Аватара пользователя
TexeL
UNITрон
 
Сообщения: 244
Зарегистрирован: 15 ноя 2009, 20:57
  • Сайт

Re: Помогите с переводом скрипта с JS на C#

Сообщение Berenold 16 дек 2011, 15:08

TexeL писал(а):Так почему самому не сделать перевод ?


Явный примерт
Скрипт из 2D тутора
Синтаксис:
Используется javascript
function FixedUpdate ()
{
        // Принудительная блокировка ось "Z"
        transform.position.z = 0;

}
 

Работает нормально

Если сделать так же на C#
Синтаксис:
Используется csharp
void FixedUpdate ()
{
        // Принудительная блокировка ось "Z"
        transform.position.z = 0;

}
 

Мы тут же получим ошибку компилятора которая гласит, что - transform.position.z открыта только для чтения!

И вот таких забавных моментов при переводе JS в С# я узрел уже достаточно. После чего просто забил на все скрипты которые написаны на JS.
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт

Re: Помогите с переводом скрипта с JS на C#

Сообщение Golandez 16 дек 2011, 15:43

Синтаксис:
Используется csharp
var pos =transform.position;
function FixedUpdate ()
{
        // Принудительная блокировка ось "Z"
        pos.z = 0;

}
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Помогите с переводом скрипта с JS на C#

Сообщение Paul Siberdt 16 дек 2011, 15:44

Может просто ознакомиться с жОскими ограничениями Шарпа?
То, что в C# нельзя прямо назначать отдельную компоненту позишену - это особенность Шарпа, а не глюки Явы :)

Если не хочется создавать новые переменные, можно
Код: Выделить всё
transform.position.z = 0;

заменить на
Код: Выделить всё
transform.position = new Vector3(transform.position.x, transform.position.y, 0f);
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Помогите с переводом скрипта с JS на C#

Сообщение 666marat666 16 дек 2011, 15:45

Синтаксис:
Используется csharp
 transform.position = new Vector3(0, 0, 0);

в том то и дело что перевод скриптов заключаеться не просто в подстановке JS кода в классы шарпа
Изображение

->Невозможно решить проблему на том же уровне, на котором она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.<-
Альберт Эйнштейн
Аватара пользователя
666marat666
UNIт
 
Сообщения: 139
Зарегистрирован: 04 авг 2010, 22:40
Откуда: Украина

Re: Помогите с переводом скрипта с JS на C#

Сообщение Berenold 23 дек 2011, 05:01

Golandez писал(а):
Синтаксис:
Используется csharp
var pos =transform.position;
function FixedUpdate ()
{
        // Принудительная блокировка ось "Z"
        pos.z = 0;

}


Простите, но то, что вы написали далеко не C#.

Paul Siberdt писал(а):Может просто ознакомиться с жОскими ограничениями Шарпа?
То, что в C# нельзя прямо назначать отдельную компоненту позишену - это особенность Шарпа, а не глюки Явы :)


Я не говорил что это глюк JS. Я лишь сказал, что есть отличия между этими двумя языками. И новичку в программировании, который только учит язык C#, ОЧЕНЬ тяжело перевести JS в C#.

666marat666 писал(а):Поищите в гугле: M2H C# to JS converter может поможет

666marat666 писал(а):
Синтаксис:
Используется csharp
 transform.position = new Vector3(0, 0, 0);

в том то и дело что перевод скриптов заключаеться не просто в подстановке JS кода в классы шарпа

Простите но вы сами себе противоречите. M2H C# to JS converter именно этим и занимается. Бездумно подставляет JS кода в классы C#.
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт

Re: Помогите с переводом скрипта с JS на C#

Сообщение Golandez 23 дек 2011, 05:40

Berenold писал(а):
Golandez писал(а):
Синтаксис:
Используется csharp
var pos =transform.position;
function FixedUpdate ()
{
        // Принудительная блокировка ось "Z"
        pos.z = 0;

}


Простите, но то, что вы написали далеко не C#.

Не оттуда скопипастил
Синтаксис:
Используется csharp
void  FixedUpdate ()
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Помогите с переводом скрипта с JS на C#

Сообщение Berenold 23 дек 2011, 05:47

Golandez писал(а):
Синтаксис:
Используется csharp
var pos =transform.position;
 

И var заменяем на Vector3 как минимум :-bd
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт

Re: Помогите с переводом скрипта с JS на C#

Сообщение Golandez 23 дек 2011, 09:16

Да вы что ? А ну марш учить матчасть.
P.S. Смотря где обьявлять.
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Помогите с переводом скрипта с JS на C#

Сообщение Berenold 23 дек 2011, 09:50

Golandez писал(а):Да вы что ? А ну марш учить матчасть.
P.S. Смотря где обьявлять.

Что значит где обЪявлять, если у вас постоянно в постах данной темы используется синтаксис (c#) :-bd
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт

След.

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8