Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 09.08.2012, 18:53   #46
Huruffus
Оператор ЭВМ
 
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
Ответ: следование объекта за мышью

получаю переменную "speed" из другого класса. нажимаю debug в monoDevelop, он не ругается. Запускаю игру нажимаю "Е" и в консоли появляется такое сообщение:
NullReferenceException: Object reference not set to an instance of an object
takeObject.Update () (at Assets/scripts/takeObject.cs:16)

весь скрипт не работает. Подскажите пожалуйста как исправить?

собственно скрипт:
using UnityEngine;
using System.Collections;

public class takeObject : MonoBehaviour {
	public GameObject takingHands;
	public Ray _ray;
	public RaycastHit _hit;
	public float speed;
	
	void Start () {
		
	}
	
	void Update () {
		speed = GetComponent<char2>().speed;  //////ОШИБОЧНАЯ СТРОЧКА
		
		if (Input.GetKeyUp(KeyCode.E)){
			_ray = Camera.main.ScreenPointToRay(Input.mousePosition);
			if (collider.Raycast(_ray, out _hit, 10)){						
				//originTransformTakingHands.transform.position = transform.position;
				rigidbody.isKinematic = true;
				_hit.collider.transform.parent = Camera.main.transform;
				transform.position = takingHands.transform.position;
			}
		}
		if (gameObject.transform.parent != null){
			if (Input.GetKey(KeyCode.F)){
					print ("F - entered");//
					transform.parent = null;
					rigidbody.isKinematic = false;
					gameObject.rigidbody.AddForce(Camera.main.transform.forward * speed, ForceMode.Impulse);
				}	
		}
	}
}
(Offline)
 
Ответить с цитированием
Старый 09.08.2012, 19:55   #47
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: следование объекта за мышью

На этом же объекте висит компонент char2?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 09.08.2012, 20:01   #48
Huruffus
Оператор ЭВМ
 
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
Ответ: следование объекта за мышью

нет. Char2 - это скрипт движения персонажа. Висит на капсуле.
а takeObject - это скрипт, позволяющий подобрать предмет, на котором висит этот скрипт
(Offline)
 
Ответить с цитированием
Старый 09.08.2012, 20:06   #49
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: следование объекта за мышью

Так вот, ты пытаешься получить компонент Char2 с этого объекта, а не с капсулы.

Попробуй следующим образом:
using UnityEngine;
using System.Collections;

public class 
takeObject MonoBehaviour {
    public 
GameObject takingHands;
    public 
Ray _ray;
    public 
RaycastHit _hit;
    public 
float speed;
        private 
char2 _char2;
    
    
void Start () {
        
_char2 = (char2)FindObjectOfType(typeof(char2));
    }
    

    
void Update () {
        
speed _char2 .speed;  //////ОШИБОЧНАЯ СТРОЧКА
        
        
if (Input.GetKeyUp(KeyCode.E)){
            
_ray Camera.main.ScreenPointToRay(Input.mousePosition);
            if (
collider.Raycast(_rayout _hit10)){                        
                
//originTransformTakingHands.transform.position = transform.position;
                
rigidbody.isKinematic true;
                
_hit.collider.transform.parent Camera.main.transform;
                
transform.position takingHands.transform.position;
            }
        }
        if (
gameObject.transform.parent != null){
            if (
Input.GetKey(KeyCode.F)){
                    print (
"F - entered");//
                    
transform.parent null;
                    
rigidbody.isKinematic false;
                    
gameObject.rigidbody.AddForce(Camera.main.transform.forward speedForceMode.Impulse);
                }    
        }
    }

__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Huruffus (09.08.2012)
Старый 09.08.2012, 21:15   #50
Huruffus
Оператор ЭВМ
 
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
Ответ: следование объекта за мышью

здорово! спасибо.

т.е. вы создали собственный тип переменной... дальше не понимаю

_char2 = (char2)FindObjectOfType(typeof(char2));

Объясните пожалуйста:
1. что значат скобки вокруг char2;
2. ...(typeof(char2)); что обозначает typeof?

мне понятно, что значит эта запись, но только туманно. мы ищем объект типа char2 и присваиваем его переменной _char2. Хочется конкретики по каждой из команд.
(Offline)
 
Ответить с цитированием
Старый 09.08.2012, 21:19   #51
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: следование объекта за мышью

1. приведение типа UnityEngine.Object (который возвращает функция FindObjectOfType) к типу char2
2. получение типа char2
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Huruffus (09.08.2012)
Старый 10.08.2012, 18:32   #52
Huruffus
Оператор ЭВМ
 
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
Ответ: следование объекта за мышью

скажите пожалуйста, почему такую ошибку выдаёт? (скрин)
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок.JPG
Просмотров: 786
Размер:	40.7 Кб
ID:	17324  
(Offline)
 
Ответить с цитированием
Старый 10.08.2012, 18:34   #53
Huruffus
Оператор ЭВМ
 
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
Ответ: следование объекта за мышью

http://youtu.be/KeCFk4bJOKA?t=10m56s

в этом туториале так написано и работает
(Offline)
 
Ответить с цитированием
Старый 10.08.2012, 19:41   #54
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: следование объекта за мышью

потому что Vertical
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Huruffus (10.08.2012)
Старый 10.08.2012, 20:27   #55
Huruffus
Оператор ЭВМ
 
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
Ответ: следование объекта за мышью

исправил, но ошибка так и осталась
(Offline)
 
Ответить с цитированием
Старый 10.08.2012, 20:29   #56
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: следование объекта за мышью

а, не прочитал ошибку) Вероятно был в туторе js
if((Input.GetAxis("Horizontal")!= 0f) && (Input.GetAxis("Vertical")!= 0f) ) 
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 12.08.2012, 19:36   #57
Huruffus
Оператор ЭВМ
 
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
Ответ: следование объекта за мышью

Здравствуйте!
Создаю анимацию в Blender3d для камеры в Unity3d.

создал анимацию (смотрите скриншот), экспортировал в Unity, написал скрипт для проигрывания анимации при передвижении. Работает.

НО!

Камера анимирована по оси Z. Когда нажимаешь клавишу для передвижения, начинает проигрываться анимация, но становиться не возможно наклонять камеру вперёд-назад во время проигрывания анимации.

Кто-нибудь знает в чём может быть дело?

Пример покачивания камеры видел, делу не помогло (там где ходишь зимой по снегу).

Скрипт анимации:

using UnityEngine;
using System.Collections;

public class 
animationCamera MonoBehaviour {
    public 
AnimationClip kuch;
    
    
void Start () {
        
animation.AddClip(kuch"kuch");
    }

    
void Update () {
        if (
Input.GetKey(KeyCode.W)) {
            
Animate ();
        }
    }
    
void Animate () {        
        
animation.Play("kuch");
    }

Миниатюры
Нажмите на изображение для увеличения
Название: Анимммммация.jpg
Просмотров: 781
Размер:	242.6 Кб
ID:	17345  
(Offline)
 
Ответить с цитированием
Старый 12.08.2012, 22:04   #58
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: следование объекта за мышью

Так это, камеру дочерним объектом сделай и делай с ней что хочешь.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 12.08.2012, 22:54   #59
Huruffus
Оператор ЭВМ
 
Регистрация: 22.07.2012
Сообщений: 37
Написано одно полезное сообщение
Ответ: следование объекта за мышью

сейчас покажу иерархию
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок.JPG
Просмотров: 777
Размер:	107.2 Кб
ID:	17347  
(Offline)
 
Ответить с цитированием
Старый 12.08.2012, 22:59   #60
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: следование объекта за мышью

Ну и в чем проблема? Удали компоненты с камеры для этого нода, поставь камеру внутрь иерархии, на ней такие же компоненты повесь для управления.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 21:25.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com