Премини към съдържанието
Krusto Todorov

Грешка в програмата за движение на js - Unity3d

Препоръчан отговор


Здравеите, искам да ви помоля за малко помощ. Имам проблем с движението на човечето в Unity3d кодът за движението е на джава скрипт ето го и него:

private var moveX:float = 0;
 private var  moveY:float = 0;
 var  jumpForce:float=3;
 var  moveSpeed:float=20;
 function  FixedUpdate () {
 moveX = Input.GetAxis("Vertical")*moveSpeed;
 moveY = Input.GetAxis("Horizontal")*moveSpeed;
 rigidbody.velocty = transform.TransformDirection(Vector3(moveX,rigidbody.velocty. y ,moveY));
 if(Input.GetButtonDown("Jump")){
   rigidbody.velocty. y  +=jumpForce;
 }
}
 fu nction  Update(){

 transform.Rotate(Vector3(0,Input.GetAxis("Mouse X"),0));
}

 

дава ми тази грешка:

 

NullReferenceException: Object reference not set to an instance of an object
Boo.Lang.Runtime.RuntimeServices.GetDispatcher (System.Object target, System.String cacheKeyName, System.Type[] cacheKeyTypes, Boo.Lang.Runtime.DynamicDispatching.DispatcherFactory factory)
Boo.Lang.Runtime.RuntimeServices.GetDispatcher (System.Object target, System.Object[] args, System.String cacheKeyName, Boo.Lang.Runtime.DynamicDispatching.DispatcherFactory factory)
Boo.Lang.Runtime.RuntimeServices.GetProperty (System.Object target, System.String name)
UnityScript.Lang.UnityRuntimeServices.GetProperty (System.Object target, System.String name)
Move.FixedUpdate () (at Assets/Scripts/Move.js:8)
 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

....

NullReferenceException: Object reference not set to an instance of an object

Boo.Lang.Runtime.RuntimeServices.GetDispatcher (System.Object target, System.String cacheKeyName, System.Type[] cacheKeyTypes, Boo.Lang.Runtime.DynamicDispatching.DispatcherFactory factory)

Boo.Lang.Runtime.RuntimeServices.GetDispatcher (System.Object target, System.Object[] args, System.String cacheKeyName, Boo.Lang.Runtime.DynamicDispatching.DispatcherFactory factory)

Boo.Lang.Runtime.RuntimeServices.GetProperty (System.Object target, System.String name)

UnityScript.Lang.UnityRuntimeServices.GetProperty (System.Object target, System.String name)

Move.FixedUpdate () (at Assets/Scripts/Move.js:8)

 

Грешката Ви казва, че една от референциите, на която викате поле или метод е NULL - т.е. не е асоциирана със съществуващ обект. 

Ако съдя по реда, на който гърми, то един от обектите в извикването

rigidbody.velocty = transform.TransformDirection(Vector3(moveX,rigidbody.velocty. y ,moveY));

е NULL. Това може да са rigidbody (Подозренията ми падат върху този) или transform. Направете проверки от типа:

if (!rigidbody) {    console.log("rigidbody is NULL");}и if (!transform) {    console.log("transform is NULL");}

за да хванете кой е проблемния обект (напълно възможно е и двата да са NULL, понеже не виждам приложание код да ги ползва като параметри, нито да ги създава), който се чупи и да видите защо така се получава.

 

Поздрави !

Редактирано от soundtracker (преглед на промените)
  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход


×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.