choopie, может лучше было бы записывать координаты в переменную, а не создавать новый обьект?
Ну вообще да, это было бы логичнее, но я хотел чтобы показывалась точка на экране, в которую бегу. Поэтому так и запилил. Ну, раз уж точка при нажатии появляется, пусть он к ней и бежит. Хотя я думаю эту систему можно было бы гораздо более легким и хорошим способом сделать, но что уж первое в голову пришло, я только учусь. =)
Добавлено (09 февраля 2015, 13:06) ---------------------------------------------
ЦитатаSkorpyX ()
choopie, может лучше было бы записывать координаты в переменную, а не создавать новый обьект?
Хотел так переделать, но что-то не получается. По нажатию мыши записывал в переменную координаты, собственно, мыши, а потом проверял, совпадают ли координаты игрока и этой переменной. Как ни пытался - не работает. >.<
Добавлено (09 февраля 2015, 13:43) --------------------------------------------- Запилил все-таки.
Если кому-то нужен скрипт для click-to-move движения:
задать новый Vector3 moveDirection = GameObject.FindGameObjectWithTag("nextTarget").transform.position - transform.position; ?:)
А я, честно говоря, не понимаю, как он определяет к какому повернуться, если их несколько одновременно. У них теги то одинаковые.
Добавлено (08 февраля 2015, 12:12) --------------------------------------------- Нужно чтобы он как-то поворачивался к последнему созданному, а не к первому.
Добавлено (08 февраля 2015, 12:49) --------------------------------------------- Починил лишь одной строчкой.
Скрипт, котрый создает таргет. Было:
Код
using UnityEngine; using System.Collections;
public class CameraScript : MonoBehaviour {
public Transform target; public static bool targetExists = false;
Так, моя система отстой. :\ Казалось бы все шик, но блин, в ней же нельзя начать двигаться к другой точке, не пройдя путь до предыдущей, лол. На полпути не выйдет сменить направление. И что-то придумать не могу, как это исправить. Как заставить объект двигаться к новой копии префаба, а про старую забыть? >.<
Сообщение отредактировал choopie - Воскресенье, 08 Февраля 2015, 02:08
MANMANA, Я думал, что цикл лишний и что есть решение лучше
Циклы для этого и нужны, ни капельки ни лишний.
Добавлено (08 февраля 2015, 01:09) --------------------------------------------- Всем доброго времени суток. Есть вопрос.
Пытаюсь сделать систему передвижения click-to-point. Ну, как в Диабло, например. Делаю в 2D, персонаж - спрайт. Сделал так: по нажатию кнопки создается объект, к которому движется персонаж. Однако у меня проблемы с transform.LookAt(); :\ Все работает четко, но спрайт персонажа поворачивается боком. >.<
либо делать стенки толще и/или пули больше, чтобы коллайдеры пуль не проскакивали коллайдеры стен. либо делать все больше. Такой эффект наблюдается, не только от низкого фпс, когда у тебя пуля и ее коллайдер перелетает коллайдер стены, но и когда щаг перемещения пули больше ширины стены.
Я по другому решил проблему, снял триггер со снарядов и вместо этого:
Собственно они уничтожаются, да не все. В чем может быть дело? Некоторые просто вылетают за стену, не понимаю от чего их поведение так зависит. Точнее нет, возможно понимаю, с фпс как-то связано, лол. Но как запилить чтобы нормально работало?
romeo98, Положить т.е. например скамейку на террейн чтобы ножки скамьи не проваливались и не висели в воздухе. Я просто привык в программе blender, в ней есть выравнивание где один объект можно состыковать с другим, выравнять по осям, думал что в unity есть похожий способ выравнивания.
Если я верно тебя понял, то V зажимаешь, жмякаешь на угол одного объекта, и на угол другого. Это привязка вершин, объект совместится с другим объектом, сопоставившись углами.
Сообщение отредактировал choopie - Пятница, 30 Января 2015, 13:08
public float speed = 15f; float direction = -1f; public static int destroyNum = 0; public float speedBonus; public float timeActive; private float effectDuration; public static float currentDuration;
Собственно говоря, технически все работает четко, в скриптах проблем нет. Но есть одно но. Фон не просто меняет скорость, а сразу передвигается на некоторое расстояние, а после окончания времени действия буста, передвигается на прежнее расстояние, и движется с прежней скоростью. То есть на время того, как работает буст, показывается будто другой фон с новой скоростью, а потом по окончании снова старый. Короче проблема только в renderer.material.mainTextureOffset. Хотелось бы, чтобы фон "запоминал", насколько он изменился с прежней скоростью, и продолжал потом со старой с того же места.
Добавлено (30 января 2015, 01:37) --------------------------------------------- http://answers.unity3d.com/questions/813671/scroll-parallax-2d-with-small-jumps-and-more.html http://answers.unity3d.com/questions/644283/renderermaterialmaintextureoffset-based-on-player.html http://answers.unity3d.com/questions/674356/infinite-parallax-background-with-no-lineal-veloci.html
Если я не сильно понятно объяснил, то вот по ссылкам описания этой же проблемы других людей. Решений там нигде нету, полдня по инету лазаю-ищу, не знаю как исправить.
Добавлено (30 января 2015, 01:48) --------------------------------------------- Нашел решение здесь: http://gamedev.stackexchange.com/questions/83328/pause-on-scrolling-backgrounds
Может кому пригодится, если столкнется с такой же проблемой.
Добавлено (30 января 2015, 03:28) --------------------------------------------- Немножко улучшил скрипт, если кому нужен:
Код
using UnityEngine; using System.Collections;
public class ScrollScript : MonoBehaviour {
public float speed = 0; public static float original_speed = 1f; public static float boost_speed = 1f; private Material currentMaterial; private float offset;
miniGameDone это что? Возможно из-за этого и есть ошибка, ActionSucces это bool функция, и ты приравниваешь возвращаемое значение этой функции к miniGameDone, т.е. оно тоже должно быть bool.
Теперь понял, что ты предлагал. Вот что сделал, прекрасно работает, почти:
Код
if ((Input.GetKey (KeyCode.Space) || Input.GetKey (KeyCode.W))){ if(holdingTime++ < jumpHeight) rigidbody2D.AddForce (new Vector2 (0, 250 )); } else holdingTime = 0;
Когда пытаюсь сделать ограничение на прыжок только с земли ( при этом коде можно бесконечно продолжать прыгать в воздухе ) - все перестает норм работать. :\ И по твоему примеру делал, и по своему делал, полчаса сидел перебирал разные варианты - не выходит поставить ограничение. >.<
Добавлено (25 января 2015, 17:18) --------------------------------------------- Так, все, ограничение заработало, спасибо. Не знаю почему до этого не работало, заново сделал и теперь все ок.
Сообщение отредактировал choopie - Воскресенье, 25 Января 2015, 17:18
FadeBaker, не совсем понял, что ты имел ввиду. >.< Я ведь вроде похожим способом и делал, заводил переменную, которую увеличивал при удержании клавиши.
Я еще вот такой быдлокод писал, отказавшись от динамичности изменения высоты, сделав 3 основных значения для нее.
Всем привет, нужна небольшая помощь. Нужно сделать так, чтобы персонаж подпрыгивал выше, если кнопка прыжка зажата дольше, чем при одном быстром нажатии. Ну, т.е.: Быстрое нажатие - невысоко подпрыгнул. Нажал и держишь клавишу - подпрыгнул выше.
Пытался умножить силу, прилагаемую к телу на меняющуюся переменную holdingTime - но это, очевидно, не вышло. Ни в FixedUpdate ни в Update, ибо выполняется то моментом. :\ Других идей больше нет.