Вращение и поворот обьекта
|
|
ZVEN | Дата: Воскресенье, 11 Сентября 2016, 20:22 | Сообщение # 21 |
почетный гость
Сейчас нет на сайте
| Так и со Stay не работает. Лично я в прошлом проекте Enter юзал, там канало, правда по-другому написано было.
Код void Update() { //LevelText.text = LevelText.text + level; MoveRunner(); }
void MoveRunner() { transform.RotateAround(new Vector3(0f, -1.9f, 0f), Vector3.forward, -50 * Time.deltaTime); }
void OnTriggerStay2D(Collider2D other) { if ((Input.GetMouseButtonDown(0)) && (other.gameObject.CompareTag("Give")) ) { Debug.Log("OK"); } } }
|
|
| |
Lertmind | Дата: Воскресенье, 11 Сентября 2016, 20:31 | Сообщение # 22 |
заслуженный участник
Сейчас нет на сайте
| Ох, попробовал бы сначала без условия, потом только с мышью. Подозреваю, что тег ты не выставил или Rigidbody2D не повесил.
|
|
| |
ZVEN | Дата: Понедельник, 12 Сентября 2016, 12:35 | Сообщение # 23 |
почетный гость
Сейчас нет на сайте
| Вот я тормоз. А Rigidbody2D то не повесил Добавлено (11 сентября 2016, 20:50) --------------------------------------------- Потом проверю, отпишусь Добавлено (11 сентября 2016, 21:09) --------------------------------------------- Дело лучше, клик смог отследить. Добавлено (12 сентября 2016, 12:35) --------------------------------------------- А если у меня есть такой скрипт в файле Ball.cs то как вызвать NewPosBall() в другом файле?
Код public class Ball : MonoBehaviour {
private float distance = 2.48f; private float angle; private float x, y;
void Start() { NewPosBall(); } void Update() { }
public void NewPosBall() { angle = Random.Range(0, 360); angle = angle * Mathf.Deg2Rad;
float x = 0 + Mathf.Cos(angle) * distance; float y = -1.9f + Mathf.Sin(angle) * distance; transform.position = new Vector2(x, y); } }
|
|
| |
EchoIT | Дата: Понедельник, 12 Сентября 2016, 14:12 | Сообщение # 24 |
старожил
Сейчас нет на сайте
| ZVEN, Код ballObject.GetComponent<Ball>().NewPosBall(); или просто Код ballObject.SendMessage("NewPosBall"); где ballObject - объект, на котором висит скрипт.
Долгожданный анонсик: State of War
Сообщение отредактировал EchoIT - Понедельник, 12 Сентября 2016, 14:12 |
|
| |
ZVEN | Дата: Понедельник, 12 Сентября 2016, 20:53 | Сообщение # 25 |
почетный гость
Сейчас нет на сайте
| Ребята, а где можно посмотреть кроме справки разбор всех основных классов, которые могут использоваться? Желательно на русском. А то бывает вкратце знаешь, начинаешь изобретать велосипед, а оно и без велосипеда есть.Добавлено (12 сентября 2016, 15:07) --------------------------------------------- Чет не робит, мож что не так делаю Пробовал так, без экземпляра не видит.
Код Ball b = new Ball(); b.GetComponent<Ball>().NewPosBall(); Добавлено (12 сентября 2016, 20:53) --------------------------------------------- Попробовал еще так
Код Ball bl = new Ball(); bl.SendMessage("NewPosBall");
Пишет: You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all UnityEngine.MonoBehaviour:.ctor() Ball:.ctor() Game:OnTriggerStay2D(Collider2D) (at Assets/Scripts/Game.cs:35)
и
NullReferenceException UnityEngine.Component.SendMessageUpwards (System.String methodName) (at C:/buildslave/unity/build/artifacts/generated/common/runtime/UnityEngineComponentBindings.gen.cs:204) Game.OnTriggerStay2D (UnityEngine.Collider2D other) (at Assets/Scripts/Game.cs:36)
|
|
| |
Lertmind | Дата: Понедельник, 12 Сентября 2016, 21:08 | Сообщение # 26 |
заслуженный участник
Сейчас нет на сайте
| ballObject - указанный выше, это GameObject. Ссылки на GameObject получают либо через открытые поля класса, либо через код. Если другой скрипт на том же GameObject, то можно просто вызывать GetComponent<Ball>().NewPosBall();. Чтобы не задавать таких совсем элементарных вопросов, гугли статьи "unity скриптинг". Но самое главное, RTFM: Руководство Unity, API скриптов, Обучающие материалы.
Сообщение отредактировал Lertmind - Понедельник, 12 Сентября 2016, 21:10 |
|
| |
ZVEN | Дата: Понедельник, 12 Сентября 2016, 21:17 | Сообщение # 27 |
почетный гость
Сейчас нет на сайте
| Может я чего-то не понимаю, но пишу GetComponent<Ball>().NewPosBall(); И он выдает: NullReferenceException: Object reference not set to an instance of an object Game.OnTriggerStay2D (UnityEngine.Collider2D other) (at Assets/Scripts/Game.cs:35)
|
|
| |
Lertmind | Дата: Понедельник, 12 Сентября 2016, 21:50 | Сообщение # 28 |
заслуженный участник
Сейчас нет на сайте
| ZVEN, я же написал, что скрипты должны быть на одном и том же GameObject, чтобы так вызывать.
|
|
| |
ZVEN | Дата: Понедельник, 12 Сентября 2016, 22:10 | Сообщение # 29 |
почетный гость
Сейчас нет на сайте
| А если они на разных, то что делать? Какой выход?
|
|
| |
Lertmind | Дата: Понедельник, 12 Сентября 2016, 22:17 | Сообщение # 30 |
заслуженный участник
Сейчас нет на сайте
| "Ссылки на GameObject получают либо через открытые поля класса, либо через код.", RTFM: Управление игровыми объектами (GameObjects) с помощью компонентов.
|
|
| |
ZVEN | Дата: Среда, 14 Сентября 2016, 10:22 | Сообщение # 31 |
почетный гость
Сейчас нет на сайте
| Ок. Спасибо, позже почитаю и опробую, скорее всего завтра. Пока смотрю уроки по скриптингу на инглише от Unity, может хоть чему-то научусь.Добавлено (13 сентября 2016, 16:57) --------------------------------------------- Проблему решил, в уроках по скриптингу от unity. Зато возник еще вопрос: Есть цифра внутри круга, вот только не могу понять как сделать так, чтобы она была постоянно на одном месте, а то при изменении разрешения она съезжает. Фото прилагаю.
Добавлено (14 сентября 2016, 10:22) --------------------------------------------- Неужели никто не знает?
|
|
| |
Lertmind | Дата: Среда, 14 Сентября 2016, 11:31 | Сообщение # 32 |
заслуженный участник
Сейчас нет на сайте
| Исуси. Если цифра - это UI -> Text, то самый простой способ сделай отдельный Canvas с Render Mode -> World Space, поместить его в нужное место и добавить на него Text.
|
|
| |
ZVEN | Дата: Среда, 14 Сентября 2016, 15:00 | Сообщение # 33 |
почетный гость
Сейчас нет на сайте
| Спасибо, сорян что я туплю конкретно.
|
|
| |