Воскресенье, 05 Февраля 2023, 01:11

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 6 из 7
  • «
  • 1
  • 2
  • 4
  • 5
  • 6
  • 7
  • »
Форум игроделов » Записи участника » ArtemS [122]
Результаты поиска
ArtemSДата: Вторник, 12 Сентября 2017, 12:09 | Сообщение # 101 | Тема: Вынести переменную из столкновения.
почетный гость
Сейчас нет на сайте
Цитата Vuvk ()
В чем проблема-то?


Код
shot = other.gameObject.GetComponent<EnemyShot>();


тут надо будет задавать объект столкновения, иначе он будет не видеть объект, получается пишу

Код
public  EnemyShot shot;


Отсюда и вытекает мой вопрос. если у меня 2 разных врага (каждый имеет свой префаб пули, который отличается по скрипту атаки: траектория движения пули, тип атаки и прочие характеристики разные). То мне придется добавить 2 таких объекта на игрока, а если у меня таких 20 врагов, то придется добавить все 20 объектов на игрока. И на все прифабы всех врагов мне придется вешать все возможные виды атак моего игрока. Вот я и спрашиваю, можно как-то этого избежать или страдать и вешать хренову тучу объектов?


хуяк, хуяк и в продакшн
ArtemSДата: Вторник, 12 Сентября 2017, 04:13 | Сообщение # 102 | Тема: Вынести переменную из столкновения.
почетный гость
Сейчас нет на сайте
Цитата Vuvk ()
Подозреваю, что EnemyShot - это скрипт на пуле?


Блин!! я же пытаюсь взять переменную с противника, а не с пули!!!! :p

А можно как-то все пули объединить, или нужно будет на объект вешать все префабы пуль чтобы он брал с нихъ значение "damage" ? blink ....или придется создавать один скрипт под все пули сразу...как-то это некрасиво


хуяк, хуяк и в продакшн
ArtemSДата: Понедельник, 11 Сентября 2017, 18:14 | Сообщение # 103 | Тема: Вынести переменную из столкновения.
почетный гость
Сейчас нет на сайте
Есть код
Код

public class Health : MonoBehaviour {

    public float health;
    float damage;    
    public  EnemyShot shot;

    void OnTriggerEnter2D (Collider2D other)
    {
        
        if (other.tag == "EnemyBullets")
        {
            EnemyShot shot = GetComponent<EnemyShot>();
            damage = shot.BulletDamage;            

            Debug.Log("enemy" + damage);

            health -= damage;
        
            if (health <= 0)
            {                
                Destroy(gameObject);
            }
        Destroy(other.gameObject);
        }
    }
}


Как можно вытащить переменную урона из пули, а то у меня пишет что объект не найден ?

NullReferenceException: Object reference not set to an instance of an object
Health.OnTriggerEnter2D (UnityEngine.Collider2D other) (at Assets/SpaceAdventures/Scripts/Health.cs:17)


хуяк, хуяк и в продакшн
ArtemSДата: Понедельник, 28 Августа 2017, 06:52 | Сообщение # 104 | Тема: Бафы и как их реализовать
почетный гость
Сейчас нет на сайте
Спасибо всем огромное за советы!!!!

Добавлено (28 августа 2017, 06:52)
---------------------------------------------
terami, скинь ,пожалуйста, хотелось бы посмотреть на твое решение вопроса


хуяк, хуяк и в продакшн
ArtemSДата: Вторник, 15 Августа 2017, 10:45 | Сообщение # 105 | Тема: Бафы и как их реализовать
почетный гость
Сейчас нет на сайте
Хочу узнать правильно ли я делаю. Есть баф. Допустим он длится 5 сек.
Код

float bufTimer;
float bufTime = 5;

FixedUpdate()
{
bufTimer = bufTime + Time.time;

if (bufTimer > Time.time)
     {<свойства бафа>}
}


Вопрос собственно в том, а если ли метод который просто говорит держать какое-то свойство определенный отрезок времени ?
Что-то типа <метод>.<сколько секунд>.<свойство бафа>


хуяк, хуяк и в продакшн

Сообщение отредактировал ArtemS - Вторник, 15 Августа 2017, 10:45
ArtemSДата: Вторник, 08 Августа 2017, 12:33 | Сообщение # 106 | Тема: [Unity][FPS] Как можно сделать джетпак в FPS
почетный гость
Сейчас нет на сайте
tduk, http://websketches.ru/blog/igra-kak-jetpack-joyride-unity2d-1

думаю в этих уроках ты найдешь ответ на свой вопрос


хуяк, хуяк и в продакшн
ArtemSДата: Понедельник, 07 Августа 2017, 18:41 | Сообщение # 107 | Тема: 2Д прицел
почетный гость
Сейчас нет на сайте
CleverRus, короче, фишка в том что слежение идет нижней стороной пушки, вот он и критится на 90 по У и слежение идет с .right и отсдает на 90 по Х. Надо разбираться как задавать в LookAt нужную сторону для слежения. думаю использовать ray но пока еще не знаю как это сделать грамотно (ну или хоть как - нибудь). вот)

Добавлено (07 августа 2017, 18:41)
---------------------------------------------
в общем вот скрипт с мнгновенным слежением за прицелом.

Код

Vector3 AIM;   
Vector3 player_pos;

void FixedUpdate ()
{
        AIM = Input.mousePosition;
        player_pos = Camera.main.WorldToScreenPoint(this.transform.position);

        AIM.x = AIM.x - player_pos.x;
        AIM.y = AIM.y - player_pos.y;

        float angle = Mathf.Atan2(AIM.x, AIM.y) * Mathf.Rad2Deg;
        this.transform.rotation = Quaternion.Euler(new Vector3(0, 0, -angle));
}


хуяк, хуяк и в продакшн
ArtemSДата: Четверг, 03 Августа 2017, 08:50 | Сообщение # 108 | Тема: 2Д прицел
почетный гость
Сейчас нет на сайте
CleverRus, смотрел. в начале rotation 0 0 0, только включаю и сразу поворот идет по У на 90. причем когда курсор в 1 и 4 четверти то 90, а когда в 2 и 3 то -90. Попробывал с Vector3,там Z по камере идет -10, а оружие на Z = 0, стал вычитать из Z высоту камеры, все равно вертится по У. Поиграл с осями в Vector3, нечего толкового не получилось. Щас на работе, приду домой вечером попробую перед LookAt y=0 или после него.

хуяк, хуяк и в продакшн
ArtemSДата: Среда, 02 Августа 2017, 18:27 | Сообщение # 109 | Тема: 2Д прицел
почетный гость
Сейчас нет на сайте
Цитата CleverRus ()
А не проще ли поменять иконку курсора через скрипт и просто отслеживать курсор?!


ну не про, извините)

щас буду смотреть как это реализовать.

Добавлено (02 августа 2017, 17:45)
---------------------------------------------
CleverRus, а у тебя нету случайно скрипта примера ? все что нашел по замене текстуры идет через GUI.Label - а это по сути то же самое что и у меня. масшбаты плоскостей отличаются и мое оружие переворачивается (почему то ровно на 90 градусов) и выстрел идет хер знает куда(

Добавлено (02 августа 2017, 18:20)
---------------------------------------------
Вот оружие поворачивается на 90 по У и я понять не могу с чем это связано. в коде ни каких вращений на gameObject нету.

http://s1.uploadpics.ru/images/ZkzKE6dKFG.png

если отключаю слежение через LookAt то оружие стоит нормально.

Добавлено (02 августа 2017, 18:27)
---------------------------------------------
как в единой системе с игроком взять координату нашел

Код
AIM = Camera.main.ScreenToWorldPoint(Input.mousePosition);


но поворот вокруг У все равно остался


хуяк, хуяк и в продакшн

Сообщение отредактировал ArtemS - Среда, 02 Августа 2017, 18:21
ArtemSДата: Вторник, 01 Августа 2017, 18:51 | Сообщение # 110 | Тема: 2Д прицел
почетный гость
Сейчас нет на сайте
Пытаюсь сделать так, чтобы пуля появлялась в направление прицела. Прицел сделан как Canvas -> Image который отслеживает положение мышки

Код

  public Vector2 mousePosition;
  
    void Update () {

       mousePosition = Input.mousePosition;
        transform.position = mousePosition;


К игроку прикреплен "ребенок" - оружие со скриптом слежения за прицелом

Код

AIM_pos = Vector2.Lerp(AIM_pos, AIM.position, Time.deltaTime * AIM_speed);
transform.LookAt(AIM_pos);


Проблема в том, что у канваса совершенно другие координаты, которые сильно отличаются от его положения на экране игры и выстрел происходит хрен знает куда. Подскажите как сделать так , что прицел имел схожие в масштабе координаты что и игрок


хуяк, хуяк и в продакшн
ArtemSДата: Понедельник, 03 Июля 2017, 04:00 | Сообщение # 111 | Тема: Дочерние объекты и как с ними работать...
почетный гость
Сейчас нет на сайте
Цитата shizofren ()
shizofren


Спасибо большое :)


хуяк, хуяк и в продакшн
ArtemSДата: Воскресенье, 02 Июля 2017, 18:16 | Сообщение # 112 | Тема: Дочерние объекты и как с ними работать...
почетный гость
Сейчас нет на сайте
Здравствуйте! Может кто объяснить как грамотно передать направление на дочерний объект. Есть объект (например корабль), я к нему прикрепил объект (оружие). По идеи направление с главного объекта должно было передавать на дочерний, но у меня почему то все пули летят в мировой системе координат строго вверх. Может кто сказать, как пуле дать направление полета в сторону носа корабля ?

хуяк, хуяк и в продакшн
ArtemSДата: Среда, 14 Июня 2017, 18:04 | Сообщение # 113 | Тема: Движение космического корабля
почетный гость
Сейчас нет на сайте
Цитата seaman ()
Что Вы собственно исправили?


Код
void FixedUpdate()
    {

        
        if (Input.GetKey(KeyCode.W))                      //вперед
            rb.AddForce(rb.transform.up * speed);

        if (Input.GetKey(KeyCode.S))                      //назад
            rb.AddForce(-rb.transform.up * speed);

        if (Input.GetKey(KeyCode.A) && Input.GetMouseButton(1))                      //влево
            rb.AddForce(-rb.transform.right * speed);

        if (Input.GetKey(KeyCode.D) && Input.GetMouseButton(1))                      //вправо
            rb.AddForce(rb.transform.right * speed);

        if (!Input.GetMouseButton(1))
        {
            Quaternion rotate = Quaternion.AngleAxis(-inputX * speedRotation, Vector3.forward);  //вращение
            rb.transform.rotation *= rotate;
        }
    }


а вопрос такой,как корректно сделать движение назад и поворот одновременно (на подобии движения автомобиля), при левой клавише+назад корабль летел влево? Я нашел решение, но мне кажется слишком сложно и мудрено с if оператором.. менять знак оси если одновременно S+A(D) нажаты. Собственно все эти проверки для того, чтобы можно было двигаться как стрейфом, так и просто вращаться, а если сюда еще и смену знака при движении назад добавить, то код будет ужасно выглядеть,а он и щас не блещет)


хуяк, хуяк и в продакшн
ArtemSДата: Среда, 14 Июня 2017, 10:54 | Сообщение # 114 | Тема: Движение космического корабля
почетный гость
Сейчас нет на сайте
Цитата seaman ()
Ни разу не видел чтобы в одном скрипте так смешивали физику и простое перемещение.
Что за глупость - устанавливать позицию и тут же прикладывать силу...


я же сказал, что исправил этот косяк.скрипт не мой, такое на просторах тырнета видел. лучше подскажите что дальше делать)


хуяк, хуяк и в продакшн
ArtemSДата: Вторник, 13 Июня 2017, 18:11 | Сообщение # 115 | Тема: Движение космического корабля
почетный гость
Сейчас нет на сайте
Народ подскажите ,пожалуйста, пытался сделать управление под действием сил, чтобы скорость постепенно набиралась и убывала, а получилось что попало. Корабль начинает лететь в указанном направлении, а потом его уносит вперед какая-то сила, не могу врубиться где накосячил. Linear drag пытался менять, нечего не помогло и на 0, и на других значениях улетает!!! Если этот же код использую без AddForce то все идеально работает....

Код
using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour
{
    public float speedRotation = 1.2f;
    public float speed = 0.05f;
    float inputX;
    float inputY;
    Rigidbody2D rb;
    

    void Start()
    {
       rb = GetComponent<Rigidbody2D>();            
    }

    void Update()
    {

        //извлечение информации оси
        inputX = Input.GetAxis("Horizontal");//лево-право
        inputY = Input.GetAxis("Vertical");  //верх-низ

    }
   
    void FixedUpdate()
    {

        
        if (Input.GetKey(KeyCode.W))                      //вперед
            rb.AddForce(rb.transform.position += rb.transform.up * speed);

        if (Input.GetKey(KeyCode.S))                      //назад
            rb.AddForce(rb.transform.position -= rb.transform.up * speed);

        if (Input.GetKey(KeyCode.A) && Input.GetMouseButton(1))                      //влево
            rb.AddForce(rb.transform.position -= rb.transform.right * speed);

        if (Input.GetKey(KeyCode.D) && Input.GetMouseButton(1))                      //вправо
            rb.AddForce(rb.transform.position += rb.transform.right * speed);

        if (!Input.GetMouseButton(1))
        {
            Quaternion rotate = Quaternion.AngleAxis(-inputX * speedRotation, Vector3.forward);  //вращение
            rb.transform.rotation *= rotate;
        }
    }
        
       

        
}

Добавлено (13 июня 2017, 18:03)
---------------------------------------------
ыыы нашел!! нужно было убрать первое слагаемое и просто оставить знак)

Добавлено (13 июня 2017, 18:11)
---------------------------------------------
Тогда другой вопрос) как корректно сделать движение назад и поворот одновременно (на подобии движения автомобиля), при левой клавише+назад корабль летел влево. Я нашел решене, но мне кажется слишком сложно и мудрино с if оператором.. менять знак оси если одновременно S+A(D) нажаты


хуяк, хуяк и в продакшн
ArtemSДата: Пятница, 05 Мая 2017, 03:55 | Сообщение # 116 | Тема: Устаревшие команды. obsolete и как с этим бороться ?
почетный гость
Сейчас нет на сайте
Цитата Vostrugin ()
Чем они тебе жить мешают?)


боюсь что со временем перестанут работать.

Цитата Wite ()
исправлять на обновленные функции.


так вот я и хочу научиться их исправлять и прошу помощи. хотя бы пример такого исправления.

похоже понял. надо заменить .fixedAngle на .constraints


хуяк, хуяк и в продакшн

Сообщение отредактировал ArtemS - Пятница, 05 Мая 2017, 05:28
ArtemSДата: Четверг, 04 Мая 2017, 17:27 | Сообщение # 117 | Тема: Устаревшие команды. obsolete и как с этим бороться ?
почетный гость
Сейчас нет на сайте
Товарищи, подскажите как или где можно посмотреть как исправить предупреждения типа

'Rigidbody2D.fixedAngle' is obsolete: 'The fixedAngle is no longer supported. Use constraints instead.'

строчка в коде такая

body = GetComponent<Rigidbody2D>();
body.fixedAngle = true;

Понятно что сказано про то , что это уже устарело и бла-бла-бла, с подобными ошибками сталкиваюсь не в первый раз и хочется научиться их исправлять)


хуяк, хуяк и в продакшн
ArtemSДата: Среда, 03 Мая 2017, 04:03 | Сообщение # 118 | Тема: поменять цвет текста, когда мышка над текстом
почетный гость
Сейчас нет на сайте
а как сделать подсвечиваемую рамку ? или чтобы включалась анимация ?)

хуяк, хуяк и в продакшн
ArtemSДата: Понедельник, 24 Апреля 2017, 18:06 | Сообщение # 119 | Тема: А как правильно писать код ?
почетный гость
Сейчас нет на сайте
Пол года смотрю и читаю разные уроки по юньке и возник вопрос.. а как правильнее или удобнее писать код для больших проектов ?
В разных уроках народ объясняет каждый раз по своему, но игры в этих уроках длятся буквально 1-2 уровня, либо объясняют какой-то определенный аспект какого-либо действия.
Сам я нечего крупного пока не написал, так как время хватает лишь посмотреть уроки и повторить за ними, +- какие-то свои моменты протестить, в общем как и у любого новичка..ну я так думаю.

Собственно хочу узнать мнение более опытных людей, скажите ,пожалуйста, как правильнее или грамотнее выстраивать код. Пытаться уложить все в некий GameControllerScript или же каждому объекту и на каждое действие писать свой уникальный скрипт... ну и собственно как это будет влиять на затраты ресурсов компьютера.

Здравый смысл говорит, что
общий код - очень просто запутаться, не знаю но может и обработка будет расти..так как каждый кадр в главном скрипте будет проходить тело всего прооекта..
хренова куча скриптов - как минимум больше памяти будет занимать, но подозреваю, что увеличится работоспособность, да и если грамотно реализовать структуру, то и не запутаешься..

А вы что скажите ?


хуяк, хуяк и в продакшн
ArtemSДата: Понедельник, 20 Марта 2017, 19:05 | Сообщение # 120 | Тема: Ошибка NullReferenceException
почетный гость
Сейчас нет на сайте
Цитата Nordicus666 ()
Смотри: дело не в этом скрипте, дело в том, что когда ты делаешь gameover = findObjectOfType<...>(); у тебя в gameover записывается, по простому этот скрипт (а вообще ссылка на него) и ты можешь через эту переменную сразу обращаться к этому скрипту (ну в том же и суть функции findobjectoftype()), но если эта функция (так написано в ее описании, вроде (я её сопоставляю с GetComponent<>() и подобными)) не находит то что ты хочешь, она возвращает null и в переменную соответственно тоже записывается null, а не этот скрипт, и когда ты пытаешься вызвать его функцию, ты пытаешься вызвать функцию "у ничего", у null, ествественно тебе и выдает ошибку nullreferenceexeption - в дословном переводе: Пустота ссылка ошибка, т.е. ошибка пустой ссылки
знаю, пишу много и однообразного, но я первый раз кому то помогаю вообще, а так же просто пытаюсь разными путями одно и то же объяснить для удобства :DD


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


хуяк, хуяк и в продакшн
Форум игроделов » Записи участника » ArtemS [122]
  • Страница 6 из 7
  • «
  • 1
  • 2
  • 4
  • 5
  • 6
  • 7
  • »
Поиск:

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