Понедельник, 25 Ноября 2024, 15:09

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-[ответ] по Unity
QWER56Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1
старожил
Сейчас нет на сайте
Вопрос-[Ответ] по Unity3d

  • База скриптов Unity3d
  • Курс Уроков по Unity 3D от Alcatraz

    ConsMark - поисковик по интернет магазинам.

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • BrightSpotДата: Понедельник, 30 Апреля 2018, 01:02 | Сообщение # 8521
    заслуженный участник
    Сейчас нет на сайте
    Код
    void Update()
    {
    Vector3 delta = player.position - transform.position;
    delta.Normalize();
    float moveSpeed = speed * Time.deltaTime;
    transform.position = transform.position + (delta * moveSpeed);
    }

    Вот так замени, по простому:
    Код

    Vector3 deltaж
    void Update()
    {
    if(player != null)//если игрок "умерает" через Destroy
    {
    delta = player.position - transform.position;
    delta.Normalize();
    }
    float moveSpeed = speed * Time.deltaTime;
    transform.position = transform.position + (delta * moveSpeed);
    }



    Более мощный компьютер глючит быстрее и точнее.
    alex9999Дата: Понедельник, 30 Апреля 2018, 20:56 | Сообщение # 8522
    был не раз
    Сейчас нет на сайте
    Цитата BrightSpot ()
    Вот так замени, по простому:

    Cпасибо, все работает, но вылезла другая проблема , если игрок уничтожен до спавна 10 врага юнити дает такое:
    NullReferenceException: Object reference not set to an instance of an object
    MoveTowardsPlayer.Start () (at Assets/scripts/MoveTowardsPlayer.cs:17)

    подскажите пожалуйста как решить


    Unity the best

    Сообщение отредактировал alex9999 - Понедельник, 30 Апреля 2018, 22:38
    BrightSpotДата: Вторник, 01 Мая 2018, 00:34 | Сообщение # 8523
    заслуженный участник
    Сейчас нет на сайте
    Цитата alex9999 ()
    но вылезла другая проблема , если игрок уничтожен до спавна 10 врага юнити дает такое:

    для начала определись в какой теме задавать вопросы=))
    А так вставь посмотри к какому объекту обращается код на 17 строке в MoveTowardsPlayer и при необходимости вставь проверку... хотя на вскидку можно предположить, что ругает неопределенную delta...
    попробуй
    Код
    if(player != null)//если игрок "умерает" через Destroy
    {
    delta = player.position - transform.position;
    delta.Normalize();
    }

    заменить на
    Код
    if(player != null)//если игрок "умерает" через Destroy
    {
    delta = player.position - transform.position;
    delta.Normalize();
    }
    else
    {
    delta = transform.position;
    }

    и подучи базу, пожалуйста - хоть какую то книженку по с# и справку по unity...



    Более мощный компьютер глючит быстрее и точнее.
    drcrackДата: Вторник, 01 Мая 2018, 00:45 | Сообщение # 8524
    старожил
    Сейчас нет на сайте
    Цитата
    хотя на вскидку можно предположить, что ругает неопределенную delta...

    Vector3 это структура, value type, ее использование никак не может вызвать NullReferenceException
    Ошибка скорее всего в Start:
    Цитата
    player = GameObject.Find("playerShip").transform;

    GameObject.Find("playerShip") возвращает null при мертвом игроке, надо добавить проверку.


    Сообщение отредактировал drcrack - Среда, 02 Мая 2018, 08:34
    alex9999Дата: Вторник, 01 Мая 2018, 21:08 | Сообщение # 8525
    был не раз
    Сейчас нет на сайте
    Цитата drcrack ()
    player = GameObject.Find("playerShip").transform;

    вы правы visual studio ругается на эту строчку: player = GameObject.Find("playerShip").transform;

    как поставить проверку, не подскажете?
    Цитата BrightSpot ()
    попробуй
    Код
    if(player != null)//если игрок "умерает" через Destroy
    {
    delta = player.position - transform.position;
    delta.Normalize();
    }

    заменить на
    Код
    if(player != null)//если игрок "умерает" через Destroy
    {
    delta = player.position - transform.position;
    delta.Normalize();
    }
    else
    {
    delta = transform.position;
    }

    к сожалению не сработало, базу обещаю подучить))


    Unity the best
    drcrackДата: Среда, 02 Мая 2018, 06:35 | Сообщение # 8526
    старожил
    Сейчас нет на сайте
    Цитата
    как поставить проверку, не подскажете?

    Код
    var ship = GameObject.Find("playerShip");
    if(ship != null) player = ship.transform;
    alex9999Дата: Среда, 02 Мая 2018, 21:13 | Сообщение # 8527
    был не раз
    Сейчас нет на сайте
    Цитата drcrack ()
    var ship = GameObject.Find("playerShip");
    if(ship != null) player = ship.transform;

    Спасибо, ошибки ушли.


    Unity the best
    STRATEG766Дата: Вторник, 08 Мая 2018, 01:14 | Сообщение # 8528
    частый гость
    Сейчас нет на сайте
    В Update добавил вот этот код для прозрачности
    Код
    img.color = new Color (0.28f, 0.5f, 0.78f, t-=0.2f*Time.deltaTime);
    Почему-то прозрачность происходит только после второго запуска игры, и то сразу же за 1 сек , хотя там стоит 0.2f. Не знаете почему в Update не работает этот код?


    Сообщение отредактировал STRATEG766 - Вторник, 08 Мая 2018, 01:16
    drcrackДата: Вторник, 08 Мая 2018, 03:03 | Сообщение # 8529
    старожил
    Сейчас нет на сайте
    А что такоe t?
    DeveloperGameДата: Вторник, 08 Мая 2018, 15:24 | Сообщение # 8530
    частый гость
    Сейчас нет на сайте
    Я на одном сайте видел 3d игру и с начало подумал, что это flash игра. Пока на экране не появился логотип unity и прогресс бар. Flash уже пару лет как устарела, и нужно переходить на другой движок и я решил поэкспериментировать с unity. Кто-нибудь знает как на нём делать игры для сайтов?

    Developer online game
    drcrackДата: Вторник, 08 Мая 2018, 15:33 | Сообщение # 8531
    старожил
    Сейчас нет на сайте
    Цитата
    Кто-нибудь знает как на нём делать игры для сайтов?

    https://docs.unity3d.com/Manual/webgl-building.html
    STRATEG766Дата: Вторник, 08 Мая 2018, 17:35 | Сообщение # 8532
    частый гость
    Сейчас нет на сайте
    Цитата drcrack ()
    А что такоe t?
    Переменная, которая в начале равна 1. Чтобы за 5 секунд картинка стала прозрачной , добавил ее в Update. Но почему-то на картинку она не действует. Или у меня код неправильный для прозрачности
    Код
    img.color = new Color (0.28f, 0.5f, 0.78f, t-=0.2f*Time.deltaTime);
    drcrackДата: Вторник, 08 Мая 2018, 18:02 | Сообщение # 8533
    старожил
    Сейчас нет на сайте
    Цитата
    Переменная, которая в начале равна 1.

    Переменная или все-таки поле класса? Код целиком бы увидеть) Потому что в этой строке ошибок вроде нет, должно работать
    PS Хотя -= я бы вынес на отдельную строчку, как-то непривычно оно смотрится среди аргументов


    Сообщение отредактировал drcrack - Вторник, 08 Мая 2018, 18:05
    STRATEG766Дата: Вторник, 08 Мая 2018, 18:05 | Сообщение # 8534
    частый гость
    Сейчас нет на сайте
    И еще вопрос. Вот я на снаряда повесил физ.материал, чтобы был рикошет от столкновении. И вот от рикошета скорость меняется и дальше летит медленнее. Решил это поменяв "Bounce Combine" физ.материала "Average" на "Maximum" , но от этого меняется угол рикошета. Как можно еще решить это кроме такого способа?

    Сообщение отредактировал STRATEG766 - Вторник, 08 Мая 2018, 18:06
    drcrackДата: Вторник, 08 Мая 2018, 18:07 | Сообщение # 8535
    старожил
    Сейчас нет на сайте
    Цитата
    Как можно еще решить это кроме такого способа?

    конечно, никто не мешает в своем обработчике столкновения изменить траекторию как тебе нужно
    STRATEG766Дата: Вторник, 08 Мая 2018, 18:35 | Сообщение # 8536
    частый гость
    Сейчас нет на сайте
    Цитата drcrack ()
    Код целиком бы увидеть)

    Да я там тупил, пытался сделать прозрачн. самого префаба. XD
    Цитата

    public Canvas mGUI;
    public Image benzBar;
    Image ShowBenzBar;
    void Start () {
    ShowBenzBar = (Image)Instantiate (benzBar);
    ShowBenzBar.transform.SetParent (myGUI.transform,true);
    }

    У меня этот скрипт висит на 4 объекта, чтобы в начале для каждого создавалась по 1 image. Не знаю, как теперь из Canvas'a получить эти image и сделать прозрачными

    Добавлено (08 Мая 2018, 18:35)
    ---------------------------------------------
    Цитата drcrack ()
    в своем обработчике столкновения изменить траекторию как тебе нужно
    Понял. Просто от кода хотел отказаться, думал может в Инспекторе это можно сделать


    Сообщение отредактировал STRATEG766 - Вторник, 08 Мая 2018, 18:35
    sim22xДата: Вторник, 08 Мая 2018, 21:16 | Сообщение # 8537
    был не раз
    Сейчас нет на сайте
    Можно ли сбилдить игру таким образом, что бы игроки потом могли её свободно модифицировать?
    InsaneSystemsДата: Вторник, 08 Мая 2018, 21:34 | Сообщение # 8538
    участник
    Сейчас нет на сайте
    sim22x, смотря какого рода модификации нужны. Чтобы смогли открыть в Unity - нет, нужны обычные исходики. Редактировать/добавлять текстуры, модели и так далее - смотрите в сторону Streaming Assets.

    Сообщение отредактировал InsaneSystems - Вторник, 08 Мая 2018, 21:34
    alex9999Дата: Среда, 09 Мая 2018, 20:55 | Сообщение # 8539
    был не раз
    Сейчас нет на сайте
    Всем привет, подскажите пожалуйста, что нужно выставить в настройках проекта(юнити2017) чтобы пропорции экрана сохранялись для всех разрешений и соотношений сторон(16:9, 4:3, 16:10 и тд и тп)? Если это в принципе возможно))

    Unity the best
    STRATEG766Дата: Среда, 09 Мая 2018, 23:58 | Сообщение # 8540
    частый гость
    Сейчас нет на сайте
    Есть у меня префаб "полоска здоровья". 2 UI images. Первая просто белый фон, вторая сама полоска здоровья (красная).
    Как мне можно получить вторую картинку префаба и менять только ее размер?
    Если бы была только одна, написал бы вот так.
    Написал вот так
    Цитата
    public Image img;
    img.transform.localScale = new Vector2 (...);

    Не знаю как получить вторую из префаба
    Поиск:

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