Результаты поиска
| |
ArtemS | Дата: Четверг, 26 Октября 2017, 04:13 | Сообщение # 81 | Тема: Самонаводящаяся пулька |
почетный гость
Сейчас нет на сайте
| Цитата MR_Borg ( ) Самое простое спасибо, думаю это то, что надо)
Цитата pixeye ( ) Как можно писать не понимая? ну бывает возникают вопросы, особенно когда 11 на часах)
Цитата pixeye ( ) Откуда знать по какому критерию ты выбираешь? По дистанции? По угрозе? По цвету? По настроению? Объясни что ты хочешь внятно для начала : )
по цвету кожи у пилота - пуля расист!!!! xD конечно, по кратчайшей дистанции, я же ее определяю)
Цитата pixeye ( ) Будет ли работать такой код зависит от оси на которую ты ориентируешься.
попробую, но думаю возникнет проблемка с локальной осью, придется немного подшаманить. спасибо
хуяк, хуяк и в продакшн
|
|
| |
ArtemS | Дата: Среда, 25 Октября 2017, 18:38 | Сообщение # 82 | Тема: Самонаводящаяся пулька |
почетный гость
Сейчас нет на сайте
| Фишка работы такая, что я стреляю в любом направлении, пуля ищет ближайшую цель и летит к ней.
написал такой код и не могу понять как именно из всех этих GO выбрать тот, что нужен именно мне, помогите пожалуйста
Код void lookPlease() { GameObject [] targets = GameObject.FindGameObjectsWithTag("Enemy"); foreach (GameObject target in targets) { var t = Mathf.Min(Vector2.Distance(gameObject.transform.position, target.transform.position));
if (???????) { var target_pos = target.transform.position; float fpsX = target.transform.position.x - transform.position.x; float fpsY = target.transform.position.y - transform.position.y; float angle = Mathf.Atan2(fpsX, fpsY) * Mathf.Rad2Deg; Quaternion b = Quaternion.Euler(new Vector3(0, 0, -angle)); transform.rotation = Quaternion.Lerp(transform.rotation, b, 10 * Time.deltaTime); } } }
и думаю придется решать вопрос в дальнейшем. как можно ограничить поиск целей в определенном углу перед игроком, чтобы не всех пролистывал в округе, а только тех кто в +-30 градусах перед игроком стоит.
хуяк, хуяк и в продакшн
|
|
| |
ArtemS | Дата: Среда, 25 Октября 2017, 04:38 | Сообщение # 83 | Тема: кому какие координаты z устанавливать. |
почетный гость
Сейчас нет на сайте
| afq, ставишь в канвасе "ориентировка по камере" кидаешь туда главную камеру и все нормально с панелями и кнопками, потом просто в иерархии их вверх - вниз ставишь чтобы они правильно отображались. В главной камере можешь уменьшить ClippingPlanes -> Far где-то до 10 и в канвасе поменять PlaneDistance где-то до 1 , тогда у тебя канвас всегда перед всем остальным будет. А вообще там же кнопка есть в Scene сверху 2D включаешь и переходишь в 3d режим и смотришь что у тебя вообще происходит Добавлено (25 октября 2017, 04:38) --------------------------------------------- afq, по умолчанию у камеры -10 Z , я никогда ее не трогал. и еще.. проекцию - ортографическую надо ставить на камере
хуяк, хуяк и в продакшн
|
|
| |
ArtemS | Дата: Вторник, 24 Октября 2017, 09:55 | Сообщение # 84 | Тема: С миру по нитке - с пользователя по идеи |
почетный гость
Сейчас нет на сайте
| Цитата Глюк ( ) Люблю русских) Только крадем и повторяем, ничего своего)
так все поступают, за 20 лет игр я уже давно перестал видеть в новых играх что-то новенькое, а если оно и появляется, то потом эту идею в десятка других проектах встречаешь. единственное , что можно как-то разнообразить. например превращать предметы (камни , дерево и прочее) в какие-то определенные вещи и при этом тратить МП на все это. По чуть-чуть взять и из первой игры и из второй, но уже что-то свое. И я выступаю против тупого копирования всего геймплея игры, всегда нужно делать что-то свое
хуяк, хуяк и в продакшн
|
|
| |
ArtemS | Дата: Понедельник, 23 Октября 2017, 19:56 | Сообщение # 85 | Тема: С миру по нитке - с пользователя по идеи |
почетный гость
Сейчас нет на сайте
| как насчет магических подставок как в Trine 2 у волшебника. Либо взаимодействие с предметами каким-то телепатическим методом, как в Max - The Curse of Brotherhood Добавлено (23 октября 2017, 19:56) --------------------------------------------- а вообще одна из лучших логических игр Oddworld: Abe's Oddysee, имхо. советовал бы поиграть для разнообразия.
хуяк, хуяк и в продакшн
|
|
| |
ArtemS | Дата: Суббота, 21 Октября 2017, 16:47 | Сообщение # 86 | Тема: Как в новом объекте воспроизвести метод из другого объекта ? |
почетный гость
Сейчас нет на сайте
| Цитата pixeye ( ) Я не вижу всего кода но выглядит так как будто ты берешь тип Блюрокет и тащишь у типа компонент. Или у тебя где-то есть gameobject переменная Bluerocket?
да, конечно, у меня есть ссылка в скрипте на этот объект) Код public GameObject BlueRocket;
Цитата pixeye ( ) НуПомаймуочважно ни)_знаю_чотиье не нравица.
ну кому-то может и так, а я вижу в ней "выбор_Улучшения_1 ранга_ Взрыв".
pixeye, спасибо за дельные советы, продолжай делать свои уроки.. я пока далек от нихъ, но думаю какими-нибудь придется пользоваться в дальнейшем. Думаю эту тему можно закрыть, так как проблему я уже давно решил.
хуяк, хуяк и в продакшн
|
|
| |
ArtemS | Дата: Суббота, 21 Октября 2017, 07:02 | Сообщение # 87 | Тема: Как в новом объекте воспроизвести метод из другого объекта ? |
почетный гость
Сейчас нет на сайте
| Цитата pixeye ( ) Это точно ошибка. Но гораздо лучше будет если ты сам попытаешься объяснить логику этого выражения. не вижу тут ошибки, при нажатии на эту кнопку меняет false на true.
Цитата pixeye ( ) var rocket = other.gameObject.GetComponent<BlueRocket>(); if (rocket !=null && rocket.choiceExplosion==true) вот это точно лишено смысла, так как уже идет проверка на (rocket.choiceExplosion==true), а если это не выполняется, то и 1ая часть выражения не может выполнится.
Цитата pixeye ( ) ТС, старайся не мыслить категориями конечных объектов ( вроде пули/ракеты с именем ) - это не гибко.
тут как показала практика имя вообще не нужно, но думаю могут быть ситуации когда от имени может зависеть, например анимации, а метод будет по логике один и тот же..
Цитата pixeye ( ) А вот что действительно не хорошо так это название метода choice_U_1_Explosion() . Давать имена методам с маленькой буквы и использовать подчёркивание моветон.
не знал что это важно, просто мне так удобнее.
Цитата shizofren ( ) Не делай так, никогда. Всегда пиши other.gameObject.GetComponent<BlueRocket>().choiceExplosion для проверки на true или !other.gameObject.GetComponent<BlueRocket>().choiceExplosion на false.
я это знаю, тут решил написать так..
хуяк, хуяк и в продакшн
Сообщение отредактировал ArtemS - Суббота, 21 Октября 2017, 07:05 |
|
| |
ArtemS | Дата: Пятница, 20 Октября 2017, 18:16 | Сообщение # 88 | Тема: Как в новом объекте воспроизвести метод из другого объекта ? |
почетный гость
Сейчас нет на сайте
| Vostrugin, был прав, какой-то косяк в
Код other.gameObject.name == "BlueRocket" но после этого стала выходить ошибка, типа взрыв не определен и не может пройти в он тригер, хотя на нем все стояло верно. в общем просто переиграл логику. убрал код из хп у врага и добавил тригер ентер к пуле и все заиграло нормально.
хуяк, хуяк и в продакшн
|
|
| |
ArtemS | Дата: Четверг, 19 Октября 2017, 19:04 | Сообщение # 89 | Тема: Как в новом объекте воспроизвести метод из другого объекта ? |
почетный гость
Сейчас нет на сайте
| Добрый день, товарищи!
Есть противник со скриптом EnemyHealth, в нем происходит проверка на столкновение
Код void OnTriggerEnter2D(Collider2D other) { if (other.tag == "PlayerBullets") { if ((other.gameObject.name == "BlueRocket") && (other.gameObject.GetComponent<BlueRocket>().choiceExplosion == true)) other.gameObject.GetComponent<BlueRocket>().ExplosionBullet(); }
как воспроизвести этот ExplosionBullet если все условия соблюдены ? Понимаю, что где-то я что-то не то делаю, но не могу понять где и что.. подскажите пожалуйста.
Код самого взрыва. Он находится на префабе BlueRocket
Код public void ExplosionBullet() { Debug.Log("axaxa"); var explosion = Instantiate(Explosion, transform.position, transform.rotation); Destroy(explosion, 0.1f); }
И вот кнопка которая делает (choiceExplosion == true)
Код public void choice_U_1_Explosion() { Time.timeScale = 1; Cursor.visible = false; W1_U_1.SetActive(!W1_U_1.activeSelf); BlueRocket.GetComponent<BlueRocket>().choiceExplosion = true; }
хуяк, хуяк и в продакшн
|
|
| |
ArtemS | Дата: Суббота, 14 Октября 2017, 19:20 | Сообщение # 90 | Тема: Canvas / Panel / Button / SetActive как выбрать нужный объек |
почетный гость
Сейчас нет на сайте
| Добрый день, товарищи! Может кто сказать как сделать чтобы на Panel (при определенных условия игры) включались лишь необходимые мне кнопки, без добавления каждой кнопки как GameObject, а лишь через обращения в основному объекту куда все эти кнопки скинуты, у меня это Panel ?
Допустим у меня 10 кнопок, я достиг 2 лвл у меня показалась 1 и 2, я достиг 3 уровня, то 3 и 4.
хуяк, хуяк и в продакшн
|
|
| |
ArtemS | Дата: Пятница, 06 Октября 2017, 07:44 | Сообщение # 91 | Тема: Прокачка персонажа / Повышение уровня |
почетный гость
Сейчас нет на сайте
| afq, спасибо) я просто пока плохо знаю с#, да и вообще программирование. вечерами после работы пару часиков сижу вот как год уже и понимаю что очень многое не знаю)
получается создаю пустой объект со скриптом, и префаб врага. а уже потом на префаб врага вешаю класс из пустого объекта. разве не получится, что в другом префабе врага будут точно такие же переменные(отвечающие за статы), что и в первом ? выходит нужно будет в префабе каждого enemy брать переменные и менять их вручную, либо задавать еще переменные которые будут уже менять стандартные статы.
Ладно, разберусь. Спасибо!)
хуяк, хуяк и в продакшн
|
|
| |
ArtemS | Дата: Пятница, 06 Октября 2017, 04:17 | Сообщение # 92 | Тема: Прокачка персонажа / Повышение уровня |
почетный гость
Сейчас нет на сайте
| afq, Цитата afq ( ) ArtemS, ты знаешь как с помощью кода создать много врагов и добавить к каждому EnemyHealth? нет. у меня идет инстанциейд префаба врага, а на префабе все нужные мне классы висят
хуяк, хуяк и в продакшн
Сообщение отредактировал ArtemS - Пятница, 06 Октября 2017, 04:21 |
|
| |
ArtemS | Дата: Четверг, 05 Октября 2017, 18:41 | Сообщение # 93 | Тема: Прокачка персонажа / Повышение уровня |
почетный гость
Сейчас нет на сайте
| единственно мне не нравится что придется добавлять всех противников и под каждого прописывать скрипт... а может и не придется..ведь EnemyHealth у меня 1 для всех..надеюсь что он будет наследовать этот класс автоматически, просто придется добавлять врагов в этот класс для ссылки)
Добавлено (05 октября 2017, 18:29) --------------------------------------------- afq, drcrack, все! все! =)) я нашел решение, оно выше ваших ответов просто. спасибо, пацаны, за помощь))Добавлено (05 октября 2017, 18:41) ---------------------------------------------
Цитата afq ( ) Ты знаешь название твоего объекта, к которому прикреплен PlayerExp? Сделай у врага так как написано ниже. Думаю ту поймешь что я хочу сказать. Код
GameObject player; EnemyHealth eh;
void Start ( ) { player = GameObject.Find ( "название объекта, к которому прикреплен PlayerExp" ); eh = player.GetComponent<PlayerExp>();
} ... /* там, где враг умирает, напиши */ eh.up_xp ( 10 ); ...
А в коде PlayerExp Код
public void up_xp ( int wow_xp ) { xp += wow_xp; }
И все. Тогда.
попробую так сделать, мне кажется это будет менее затратно чем постоянно проверять статус жив/мертв на врагах...особенно если учесть что я их дахрена хочу сделать)
хуяк, хуяк и в продакшн
Сообщение отредактировал ArtemS - Четверг, 05 Октября 2017, 18:32 |
|
| |
ArtemS | Дата: Четверг, 05 Октября 2017, 17:58 | Сообщение # 94 | Тема: Прокачка персонажа / Повышение уровня |
почетный гость
Сейчас нет на сайте
| drcrack, afq, все я решил проблему. Беда в том что у меня несколько объектов на сцене и нужно было у каждого проверку делать) а я ж и не знал)))))
Код using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;
public class PlayerExp : MonoBehaviour {
//переменные для опыта public int xp; int curXp = 0; int maxXp = 50;
//переменные для уровня int lvl = 1; public int maxLvl = 10;
public Slider slider; public EnemyHealth enemy1;
void Awake () {
//задаются значения слайдера slider.value = xp; slider.maxValue = maxXp; }
void Update() {
GameObject[] enemy = GameObject.FindGameObjectsWithTag("Enemy"); foreach (GameObject tr in enemy) { enemy1 = tr.GetComponent<EnemyHealth>(); if (enemy1.die == true) enemy1Death(); }
}
public void enemy1Death() { Destroy(enemy1.gameObject); curXp = enemy1.getXp; xp += curXp; slider.value = xp; curXp = 0; } }
хуяк, хуяк и в продакшн
Сообщение отредактировал ArtemS - Четверг, 05 Октября 2017, 18:22 |
|
| |
ArtemS | Дата: Среда, 04 Октября 2017, 18:42 | Сообщение # 95 | Тема: Прокачка персонажа / Повышение уровня |
почетный гость
Сейчас нет на сайте
| drcrack, сделал чтобы curXP лишь раз была больше 0, и после сложения вновь 0 становилась.
Код curXp = enemy1.GetComponent<EnemyHealth>().getXp; xp += curXp; slider.value = xp; curXp = 0;
Код //блок с переменными не показываю ибо их дохрена и они сейчасне нужны
public int getXp = 10;
//не стал писать код где взаимодействие с триггерами и коллизиями а лишь интересующую часть показываю
if (health <= 0) { Death(); }
public void Death() { Destroy(gameObject); Destroy(slider); }
afq, честно так и не понял как присвоить gameObject = null;...можешь пояснить ?
CleverRus, попробывал...добавил в метот Death() bool die = true. И уже в скрипте на ХР прописал if (enemy1.GetComponent<EnemyHealth>().die == true), но у меня все равно нечего не работает.
Код public void Death() { die = true; Destroy(gameObject); Destroy(slider); }
и сделал проверку в скрипте на игроке
Код void Update() { if (enemy1.GetComponent<EnemyHealth>().die == true) { GetExp(); Debug.Log(enemy1.GetComponent<EnemyHealth>().die); xp += curXp; slider.value = xp; curXp = 0; Debug.Log(enemy1.GetComponent<EnemyHealth>().die); } }
public void GetExp() { curXp = enemy1.GetComponent<EnemyHealth>().getXp; enemy1.GetComponent<EnemyHealth>().die = false; }
HerrPotapov, у меня проблема в том, что в update у скрипта не проходит if.
хуяк, хуяк и в продакшн
|
|
| |
ArtemS | Дата: Среда, 04 Октября 2017, 04:24 | Сообщение # 96 | Тема: Прокачка персонажа / Повышение уровня |
почетный гость
Сейчас нет на сайте
| afq, нет. я думал он автоматически присваивается если объект уничтожается со сцены...
хуяк, хуяк и в продакшн
|
|
| |
ArtemS | Дата: Вторник, 03 Октября 2017, 18:08 | Сообщение # 97 | Тема: Прокачка персонажа / Повышение уровня |
почетный гость
Сейчас нет на сайте
| Товарищи, подскажите как сделать чтобы при гибели противник передавал переменную getXp (количество опыта) игровому контроллеру.
Имеется противник и игрок, игрок стреляет и убивает врага ..пробую через нул, но не получается через if (enemy1 == null).
Код //переменные для опыта public int xp; int curXp = 0; int maxXp = 50;
//переменные для уровня int lvl = 1; public int maxLvl = 10;
public Slider slider; public EnemyHealth enemy1;
void Awake () {
//задаются значения слайдера slider.value = xp; slider.maxValue = maxXp; }
void Update() { if (enemy1 == null) { curXp = enemy1.getXp; xp += curXp; slider.value = xp; } }
хуяк, хуяк и в продакшн
|
|
| |
ArtemS | Дата: Четверг, 21 Сентября 2017, 08:21 | Сообщение # 98 | Тема: Изменение color.a |
почетный гость
Сейчас нет на сайте
| beril, seaman, спасибо за подсказки
оказывается беда в том, что у меня альфа увеличивается до 255, а максимальное ее значение примерно 7
хуяк, хуяк и в продакшн
Сообщение отредактировал ArtemS - Пятница, 22 Сентября 2017, 05:53 |
|
| |
ArtemS | Дата: Среда, 20 Сентября 2017, 18:34 | Сообщение # 99 | Тема: Изменение color.a |
почетный гость
Сейчас нет на сайте
| Пытаюсь сделать скрипт понижения альфы при бездействии, и повышения при получении урона.
Код void Update() { if (alfaBarTimer < Time.time) { alfaBarTimer = Time.time; }
if (alfaBarTimer > Time.time) AlfaBarUp(); else AlfaBarDown();
}
действия при столкновении
Код //регулировка таймера за счет попадания if (alfaBarTimer <= Time.time) { alfaBarTimer = 5 + Time.time; }
ну и собственно методы повышения и понижения альфы
Код //метод понижения альфы public void AlfaBarDown() { imgBar.color = new Color(imgBar.color.r, imgBar.color.g, imgBar.color.b, Mathf.SmoothDamp(imgBar.color.a, 0, ref speedBar, timeBar)); imgBarBackground.color = new Color(imgBarBackground.color.r, imgBarBackground.color.g, imgBarBackground.color.b, Mathf.SmoothDamp(imgBarBackground.color.a, 0, ref speedBarBG, 1)); }
//метод повышения альфы public void AlfaBarUp() { imgBar.color = new Color(imgBar.color.r, imgBar.color.g, imgBar.color.b, Mathf.SmoothDamp(imgBar.color.a, 255, ref speedBar, timeBar)); imgBarBackground.color = new Color(imgBarBackground.color.r, imgBarBackground.color.g, imgBarBackground.color.b, Mathf.SmoothDamp(imgBarBackground.color.a, 255, ref speedBarBG, 1)); }
Но у меня почему-то получается, что появляются они мнгновенно, а исчезают - передний фон сразу пропадает, а БГ постепенно. Может кто подсказать где я допустил ошибку ?
хуяк, хуяк и в продакшн
Сообщение отредактировал ArtemS - Среда, 20 Сентября 2017, 18:37 |
|
| |
ArtemS | Дата: Вторник, 19 Сентября 2017, 09:42 | Сообщение # 100 | Тема: Префаб канваса |
почетный гость
Сейчас нет на сайте
| drcrack, сделал по другому. отказался от создания канваса, а просто дочерним объектом кинул на него маленький канвас со слайдером на ХП и прикрепил к нему скрипт слежения за родителем, чтобы не крутился и держал всегда свою позицию относительно камеры.
хуяк, хуяк и в продакшн
|
|
| |
|