Вопрос-[ответ] по Unity
| |
QWER56 | Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Вопрос-[Ответ] по Unity3d
База скриптов Unity3d Курс Уроков по Unity 3D от Alcatraz
ConsMark - поисковик по интернет магазинам.
Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54 |
|
| |
Killerbot | Дата: Понедельник, 19 Декабря 2011, 19:58 | Сообщение # 1301 |
участник
Сейчас нет на сайте
| iMoonlightAndre, а мы в школе еще не учили языков программирования, хотя я еще в 8 классе. В каком классе изучают программирование?
|
|
| |
35363 | Дата: Понедельник, 19 Декабря 2011, 20:05 | Сообщение # 1302 |
участник
Сейчас нет на сайте
| Привет всем, нужна помощь по написанию и вызову функции в Unity3d.
Вот собственно скрипт содержащий функцию: Code using UnityEngine; using System.Collections;
public class FunctionTest : MonoBehaviour {
void TestFunction(){ } } Пустая функция(это в данный момент не важно). Вроде бы всё правильно. Вызывается всё это дело вот так: Code FunctionTest.TestFunction() Здесь вроде бы всё верно. То есть я пытаюсь вызвать функцию отдельным скриптом, но не получается, выдает ошибку: Code error CS0120: An object reference is required to access non-static member `FunctionTest.TestFunction()' Кто-нибудь может помочь? На JS вроде намного проще, но тут C#.
Если ничего не получается, а до этого получалось - необходимо вернутся в то состояние при котором все получалось!
|
|
| |
sk0rpi0n | Дата: Понедельник, 19 Декабря 2011, 21:12 | Сообщение # 1303 |
Tiberium
Сейчас нет на сайте
| Посоны ваще JS-ята, я три месяца не работал с юнити и все забыл . Как сделать, чтобы когда игрок наступает на куб, то у него включается гравитация(useGravity)? Куб - Rigidbody, игрок - стандартная капсула, тэг Player. Что-то там типа Code function OnCollisionEnter( collision:Collision ) { gameObject.rigidbody.UseGravity = true; } Но не особо у меня этот код работает, какие бы варианты я не пробовал.
Quote В каком классе изучают программирование? Не раньше 9, хотя у нас его вообще не будет...
Adventures of the Purple Ball - готов. Wanderer - готов.
Сообщение отредактировал sk0rpi0n - Понедельник, 19 Декабря 2011, 21:15 |
|
| |
35363 | Дата: Понедельник, 19 Декабря 2011, 21:18 | Сообщение # 1304 |
участник
Сейчас нет на сайте
| sk0rpi0n, Edit --> Project Settings --> Physics Глянь там. Есть настройки физики и вроде бы гравитации.
Если ничего не получается, а до этого получалось - необходимо вернутся в то состояние при котором все получалось!
Сообщение отредактировал 35363 - Понедельник, 19 Декабря 2011, 21:18 |
|
| |
sk0rpi0n | Дата: Понедельник, 19 Декабря 2011, 21:19 | Сообщение # 1305 |
Tiberium
Сейчас нет на сайте
| Quote (35363) Глянь там. Есть настройки физики и вроде бы гравитации. Спасибо конечно, но там только настройки, а мне нужно, чтобы через скрипт происходила активация гравитации при прикосновении игрока к кубу, а не с самого старта уровня.
Adventures of the Purple Ball - готов. Wanderer - готов.
Сообщение отредактировал sk0rpi0n - Понедельник, 19 Декабря 2011, 21:20 |
|
| |
35363 | Дата: Понедельник, 19 Декабря 2011, 21:22 | Сообщение # 1306 |
участник
Сейчас нет на сайте
| sk0rpi0n, Эмм не понимаю в чем проблема в Rigidbody объекта в инспекторе убираешь галочку Use gravity и потом активируешь скриптом, или в Start твоего скрипта пишешь: Code gameObject.rigidbody.UseGravity = false;
Если ничего не получается, а до этого получалось - необходимо вернутся в то состояние при котором все получалось!
Сообщение отредактировал 35363 - Понедельник, 19 Декабря 2011, 21:22 |
|
| |
sk0rpi0n | Дата: Понедельник, 19 Декабря 2011, 21:26 | Сообщение # 1307 |
Tiberium
Сейчас нет на сайте
| Quote (35363) sk0rpi0n, Эмм не понимаю в чем проблема в Rigidbody объекта в инспекторе убираешь галочку Use gravity и потом активируешь скриптом, или в Start твоего скрипта пишешь Проблема в том, что я не помню, как сделать, чтобы гравитация включалась при коллизии игрока с кубом. Пишу вот так: Code function OnCollisionEnter( Player:Collision ) { gameObject.rigidbody.UseGravity = true; } Гравитация включается из-за любого объекта. Вот так: Code function OnCollisionEnter( other:Collision ) { gameObject.rigidbody.UseGravity = true; } Тоже самое...
Adventures of the Purple Ball - готов. Wanderer - готов.
|
|
| |
35363 | Дата: Понедельник, 19 Декабря 2011, 21:37 | Сообщение # 1308 |
участник
Сейчас нет на сайте
| Вобщем примерно так: Code public var ObjectForCollison:GameObject; public var x:int;
function OnCollisionEnter(ObjectForCollision) { x+=1; } При столкновении объекта к x прибавляется 1, это для демонстрации. То есть меняешь на свой Code gameObject.rigidbody.UseGravity = true;
Если ничего не получается, а до этого получалось - необходимо вернутся в то состояние при котором все получалось!
Сообщение отредактировал 35363 - Понедельник, 19 Декабря 2011, 21:37 |
|
| |
sk0rpi0n | Дата: Понедельник, 19 Декабря 2011, 21:43 | Сообщение # 1309 |
Tiberium
Сейчас нет на сайте
| Quote (35363) Вобщем примерно так То же самое, при прикосновении любого объекта гравитация применяется... Хотя я выбрал Player в ObjectForCollision.
Adventures of the Purple Ball - готов. Wanderer - готов.
|
|
| |
RipDev | Дата: Понедельник, 19 Декабря 2011, 21:49 | Сообщение # 1310 |
гейм-дизайнер
Сейчас нет на сайте
| 35363, Нужно сначала найти компонент, сто раз уже обсуждалось и обсуждается. Нужно читать справку, не для дураков написана.
Code GameObject foo=GameObject.Find("GOна котором висит скрипт").GetComponent("FunctionTest"); foo.TestFunction();
gameObject.GetComponent<FunctionTest>().TestFunction(); //Думаю не надо пояснять, что gameObject это текущий го на котором висит скрипт. И не надо вызывать из шарпа джава или наоборот, слышал есть проблемы с этим. Quote (35363) Кто-нибудь может помочь? На JS вроде намного проще, но тут C# С чего это вдруг? Одинаково.
А вообще для развития, введи в справке GameObject и посмотри методы.
Добавлено (19.12.2011, 21:49) --------------------------------------------- sk0rpi0n, Code Player.rigidbody.UseGravity = true; Нужно же включать гравитацию у плеера, а не куба или го на котором скрипт? gameObject это текущий гейобжект на котором висит скрипт.
Взгляни на сей изукрашенный образ, на тело, полное изъянов, составленное из частей, болезненное, исполненное многих мыслей, в которых нет ни определённости, ни постоянства.
|
|
| |
35363 | Дата: Понедельник, 19 Декабря 2011, 21:50 | Сообщение # 1311 |
участник
Сейчас нет на сайте
| Балиин точно, извини, вот http://answers.unity3d.com/questio....on.html должно помочь.
То есть по примеру получается : Code function OnCollisionEnter(collision:Collision) { if(collision.gameObject.tag == "Player") { gameObject.rigidbody.UseGravity = true; } }
по идее так. Сам я на C# только пишу, в JS не лезу...
Если ничего не получается, а до этого получалось - необходимо вернутся в то состояние при котором все получалось!
|
|
| | |
35363 | Дата: Понедельник, 19 Декабря 2011, 21:56 | Сообщение # 1313 |
участник
Сейчас нет на сайте
| RipDev, спасибо, +.
Если ничего не получается, а до этого получалось - необходимо вернутся в то состояние при котором все получалось!
Сообщение отредактировал 35363 - Понедельник, 19 Декабря 2011, 22:14 |
|
| |
RipDev | Дата: Понедельник, 19 Декабря 2011, 22:17 | Сообщение # 1314 |
гейм-дизайнер
Сейчас нет на сайте
| Quote (35363) RipDev, то есть? Если я захочу в какой-то момент использовать функцию из какого-либо скрипта мне в любом случае придётся искать сам компонент?Так? Угу, вот только есть 1 момент, который я не рассматривал. Это разница между: gameObject.GetComponent<FunctionTest>().TestFunction(); Когда компонет берется из скрипта, который может даже не висеть на го. И когда скрипт висит на го и берется он с него. GameObject foo=GameObject.Find("GOна котором висит скрипт").GetComponent("FunctionTest"); Думаю здесь если что либо менять, то отразиться только на конкретном го. а в случае выше, но все го на которых висит скрипт.
Взгляни на сей изукрашенный образ, на тело, полное изъянов, составленное из частей, болезненное, исполненное многих мыслей, в которых нет ни определённости, ни постоянства.
|
|
| |
xPFaN | Дата: Понедельник, 19 Декабря 2011, 22:27 | Сообщение # 1315 |
был не раз
Сейчас нет на сайте
| RipDev, Спасибо, с меня +
|
|
| |
35363 | Дата: Понедельник, 19 Декабря 2011, 22:27 | Сообщение # 1316 |
участник
Сейчас нет на сайте
| RipDev, я именно это и хотел, мне не нужно чтобы скрипт висел на го, а просто вот взять из ассетов скрипт и выполнить нужную мне функцию:)
Если ничего не получается, а до этого получалось - необходимо вернутся в то состояние при котором все получалось!
|
|
| |
sk0rpi0n | Дата: Вторник, 20 Декабря 2011, 14:42 | Сообщение # 1317 |
Tiberium
Сейчас нет на сайте
| Quote Нужно же включать гравитацию у плеера, а не куба или го на котором скрипт? gameObject это текущий гейобжект на котором висит скрипт. Нет, именно куба. Вот так, как я написал - кубы с друг другом касаются и у них гравитация включается! А мне нужно, чтобы только при прикосновении игрока... Короче пишу еще раз что мне нужно: Игрок идёт, становится на куб(коллизия типо), и у куба включается гравитация, которая с самого начала выключена в Rigidbody-настройках куба.
Adventures of the Purple Ball - готов. Wanderer - готов.
Сообщение отредактировал sk0rpi0n - Вторник, 20 Декабря 2011, 14:46 |
|
| |
Eye | Дата: Вторник, 20 Декабря 2011, 14:55 | Сообщение # 1318 |
заслуженный участник
Сейчас нет на сайте
| Создаешь сверху куба триггер и кидаешь этот код. Если название триггера Pesok - подключается ригидбоди (по началу его не должно быть) и добавляется масса.
Code function OnTriggerEnter (other : Collider) { if(other.gameObject.name == "Pesok"){ other.gameObject.AddComponent(Rigidbody); rigidbody.mass = 10;
}
}
ICQ: 422190728, E-Mail: funnyalien@yandex.ru, Jabber: funnyalien@jabber.ru, Steam: funnyalienvalentine, Twitter: MrFunnyAlien, Skype: happyconsole, ВКонтакте: vk.com/twinemen, Мобильный: +79199212414.
Сообщение отредактировал Eye - Вторник, 20 Декабря 2011, 14:56 |
|
| |
Povstalez | Дата: Вторник, 20 Декабря 2011, 17:49 | Сообщение # 1319 |
постоянный участник
Сейчас нет на сайте
| Quote (RipDev) gameObject.GetComponent<FunctionTest>().TestFunction(); Когда компонет берется из скрипта, который может даже не висеть на го. Вы понимаете что Вы несёте? Знаете что такое gameObject? Это объект, на котором висит сам скрипт. Т.е. Вам не нужно находить объект, если этот скрипт лежит с компонентом, который вам нужно.....
|
|
| |
35363 | Дата: Вторник, 20 Декабря 2011, 18:01 | Сообщение # 1320 |
участник
Сейчас нет на сайте
| Я вот кстати тоже не понимаю, оба предложенных варианта, предназначены для получения компонента прямо из объекта. А как мне использовать функцию скрипта, который не находится на сцене?(лежит в ассетах) или это невозможно?
Если ничего не получается, а до этого получалось - необходимо вернутся в то состояние при котором все получалось!
|
|
| |
|