Пятница, 19 Апреля 2024, 21:14

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Записи участника » ArtemS [124]
Результаты поиска
ArtemSДата: Четверг, 26 Октября 2017, 04:13 | Сообщение # 81 | Тема: Самонаводящаяся пулька
почетный гость
Сейчас нет на сайте
Цитата MR_Borg ()
Самое простое

спасибо, думаю это то, что надо)

Цитата pixeye ()
Как можно писать не понимая?

ну бывает возникают вопросы, особенно когда 11 на часах)

Цитата pixeye ()
Откуда знать по какому критерию ты выбираешь? По дистанции? По угрозе? По цвету? По настроению? Объясни что ты хочешь внятно для начала : )


по цвету кожи у пилота - пуля расист!!!! xD конечно, по кратчайшей дистанции, я же ее определяю)

Цитата pixeye ()
Будет ли работать такой код зависит от оси на которую ты ориентируешься.


попробую, но думаю возникнет проблемка с локальной осью, придется немного подшаманить. спасибо


хуяк, хуяк и в продакшн
ArtemSДата: Среда, 25 Октября 2017, 18:38 | Сообщение # 82 | Тема: Самонаводящаяся пулька
почетный гость
Сейчас нет на сайте
Фишка работы такая, что я стреляю в любом направлении, пуля ищет ближайшую цель и летит к ней.

написал такой код и не могу понять как именно из всех этих GO выбрать тот, что нужен именно мне, помогите пожалуйста lovegcup
Код

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, сделал по другому. отказался от создания канваса, а просто дочерним объектом кинул на него маленький канвас со слайдером на ХП и прикрепил к нему скрипт слежения за родителем, чтобы не крутился и держал всегда свою позицию относительно камеры.

хуяк, хуяк и в продакшн
Форум игроделов » Записи участника » ArtemS [124]
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг