Пятница, 22 Ноября 2024, 23:28

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

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

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

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

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • BassPiraT92Дата: Четверг, 14 Декабря 2017, 21:46 | Сообщение # 8421
    участник
    Сейчас нет на сайте
    Здравствуйте! Делаю 3D игру с видом 2D. Подскажите хорошие уроки по данному направлению. Пока что интересует анимация моделей и поворот к направлению мыши
    koshkacherepashkaДата: Суббота, 16 Декабря 2017, 21:32 | Сообщение # 8422
    уже был
    Сейчас нет на сайте
    здравствуйте если пишу не туда, подскажите куда нужно.
    вопрос: Никак не могу сделать так чтобы 2д спрайты отбрасывали реальные тени от света в 3д пространстве (Unity - free 2017) ?
    drcrackДата: Воскресенье, 17 Декабря 2017, 00:23 | Сообщение # 8423
    старожил
    Сейчас нет на сайте
    А как делаешь?
    koshkacherepashkaДата: Воскресенье, 17 Декабря 2017, 10:40 | Сообщение # 8424
    уже был
    Сейчас нет на сайте
    Drcrack, я пытался по всякому, единственное что не пробовал ещё это вот этот шейдр который много где предлагают вставить, типа где прописаны тени от спрайтов, наткнулся в итоге на него вчера, попробую - отпишу.
    BoДата: Пятница, 22 Декабря 2017, 05:33 | Сообщение # 8425
    почетный гость
    Сейчас нет на сайте
    Два вопроса:

    1) В примерах очень часто вижу, что при Instantiate используется as Rigidbody а не as GameObject. С чем это связано?
    Код
    rocketInstance = Instantiate(rocketPrefab, barrelEnd.position, barrelEnd.rotation) as Rigidbody


    2) Где можно почитать разъяснение (для понимания) что такое Time*deltaTime ? Я понимаю как его использовать, но не могу въехать как конкретно оно связано с FPS


    Сообщение отредактировал Bo - Пятница, 22 Декабря 2017, 05:33
    drcrackДата: Пятница, 22 Декабря 2017, 06:25 | Сообщение # 8426
    старожил
    Сейчас нет на сайте
    Цитата
    1) В примерах очень часто вижу, что при Instantiate используется as Rigidbody а не as GameObject. С чем это связано?

    Копируется в любом случае весь обьект целиком, но так выражение возвращает конкретный компонент, а не GameObject
    Код
    Instantiate(rocketPrefab, barrelEnd.position, barrelEnd.rotation) as Rigidbody
    Код
    Instantiate(rocketPrefab, barrelEnd.position, barrelEnd.rotation).GetComponent<Rigidbody>()

    ^ Это одно и то же
    Цитата

    2) Где можно почитать разъяснение (для понимания) что такое Time*deltaTime ? Я понимаю как его использовать, но не могу въехать как конкретно оно связано с FPS

    Time*deltaTime это ошибка компиляции :D
    А Time.deltaTime это время, прошедшее с предыдущего кадра

    Оно обратно пропорционально FPS (чем больше фпс, тем меньше deltaTime)
    Если предположить, что все кадры одинаковые и фпс стабильный, то deltaTime = 1f / FPS
    Т.е. при среднем фпс в 60 кадров в секунду, deltaTime в среднем будет 1/60 секунды, 0.016f (=16мс)

    Представь у тебя есть обьект, который должен двигаться со скоростью 10 метров в секунду
    Чтобы вычислить, насколько его нужно сдвинуть за кадр, ты должен умножить скорость на время, прошедшее с прошлого перемещения
    Вот Time.deltaTime и есть это время, умножаешь его на скорость и получаешь расстояние, которое он должен пройти за кадр


    Сообщение отредактировал drcrack - Пятница, 22 Декабря 2017, 06:34
    web_sstasДата: Пятница, 22 Декабря 2017, 14:23 | Сообщение # 8427
    частый гость
    Сейчас нет на сайте
    С чем может быть связана ошибка "CommandInvokationFailure: Failed to build apk." при сборке проекта под андройд? В проекте не используются плагины, переустанавливал движок, android studio, jdk, не помогает.

    drcrackДата: Пятница, 22 Декабря 2017, 14:59 | Сообщение # 8428
    старожил
    Сейчас нет на сайте
    Да с чем угодно. Для начала попробуй в настройках версию JDK поставить 8, если у тебя стоит 9

    Сообщение отредактировал drcrack - Пятница, 22 Декабря 2017, 14:59
    web_sstasДата: Пятница, 22 Декабря 2017, 18:37 | Сообщение # 8429
    частый гость
    Сейчас нет на сайте
    На чистую систему, установил последние версии unity, sdk, jdk. Создаю новый проект, под андроид не билдится, что не так? Кто-нибудь работает на последней (2017.3.0f3) версии движка?
    drcrackДата: Пятница, 22 Декабря 2017, 19:00 | Сообщение # 8430
    старожил
    Сейчас нет на сайте
    У тебя в логе указана конкретная ошибка, а я тебе предлагаю решение, причем тут чистая система?.. Просто собирай с JDK 8 а не 9
    CrehoreДата: Суббота, 23 Декабря 2017, 01:12 | Сообщение # 8431
    был не раз
    Сейчас нет на сайте
    Для начала подойдет ли бесплатная версия Unity с лицензией Personal?
    web_sstasДата: Суббота, 23 Декабря 2017, 03:38 | Сообщение # 8432
    частый гость
    Сейчас нет на сайте
    drcrack, второй раз пытался уже с восьмой версией, бесполезно.

    P.s. Кажется решил проблему, скачав более раннюю версию папки tools и заменив её в SDK.


    Сообщение отредактировал web_sstas - Суббота, 23 Декабря 2017, 03:53
    FlyOfFlyДата: Суббота, 23 Декабря 2017, 08:48 | Сообщение # 8433
    заслуженный участник
    Сейчас нет на сайте
    Цитата Crehore ()
    Для начала подойдет ли бесплатная версия Unity с лицензией Personal?

    Пойдет
    BassPiraT92Дата: Суббота, 23 Декабря 2017, 12:48 | Сообщение # 8434
    участник
    Сейчас нет на сайте
    Помогите! Есть скрипт:

    Код

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine.Sprites;
    using UnityEngine;

    public class Character : MonoBehaviour {

        [SerializeField]
        public int lives = 5;
      [SerializeField]
        public float speed = 3.0f;
        [SerializeField]
        public float jumpForce = 2.5f;
        [SerializeField]
        public bool isGrounded=false;

        private CharState State
        {
            get { return (CharState)animator.GetInteger("State"); }
            set { animator.SetInteger("state", (int)value); }
        }
        new private Rigidbody2D rigidbody;
        private Animator animator;
        private SpriteRenderer sprite;

        private void Awake()
        {
      rigidbody = GetComponent<Rigidbody2D> ();
      animator = GetComponent<Animator> ();
      sprite = GetComponentInChildren<SpriteRenderer> ();

        }

        private void FixedUpdate()
        {
      CheckGround();
        }

        private void Update()
        {
            if (Input.GetKeyDown(KeyCode.Escape)) Application.Quit();

            if(isGrounded) State = CharState.idle;
            if (Input.GetButton("Horizontal")) Run();
            if (isGrounded && Input.GetButton("Jump")) Jump();

        }

        private void Run()
        {
           

            Vector3 direction = transform.right * Input.GetAxis("Horizontal");
            transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime);
            sprite.flipX = direction.x < 0.0f;
            State = CharState.run;
        }

        private void Jump()
        {

            rigidbody.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
            State = CharState.jump;

        }
        private void CheckGround()
        {
      Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, 0.3f);

         isGrounded = colliders.Length > 1;
        }
        public enum CharState
        {
            idle,
            run,
            jump
        }
    }



    Функция
    Код
    sprite.flipX = direction.x < 0.0f;
    не работает т.к. не зеркалит спрайт. Что делать? Кто поможет?
    drcrackДата: Суббота, 23 Декабря 2017, 13:22 | Сообщение # 8435
    старожил
    Сейчас нет на сайте
    Цитата
    не работает т.к. не зеркалит спрайт. Что делать? Кто поможет?

    все остальное работает? обьект правильно перемещается, проблема только в отображении спрайта?
    BassPiraT92Дата: Суббота, 23 Декабря 2017, 13:57 | Сообщение # 8436
    участник
    Сейчас нет на сайте
    Цитата drcrack ()
    все остальное работает? обьект правильно перемещается, проблема только в отображении спрайта?

    Да все нормально кроме зеркаливания
    drcrackДата: Суббота, 23 Декабря 2017, 14:11 | Сообщение # 8437
    старожил
    Сейчас нет на сайте
    Код
    sprite = GetComponentInChildren<SpriteRenderer>();

    Может там есть другие спрайты и ты получаешь не тот что нужен?
    И что если у правильного спрайта во время игры вручную выставить flipX в инспекторе?
    BassPiraT92Дата: Суббота, 23 Декабря 2017, 14:24 | Сообщение # 8438
    участник
    Сейчас нет на сайте
    Цитата drcrack ()
    Может там есть другие спрайты и ты получаешь не тот что нужен?
    И что если у правильного спрайта во время игры вручную выставить flipX в инспекторе?


    Есть и другие спрайты но ни какой из них не ворочается. В ручную по X и Y вертятся.

    Возможно есть какой то способ в ручную указать именно этот спрайт?



    Сообщение отредактировал BassPiraT92 - Суббота, 23 Декабря 2017, 14:28
    drcrackДата: Суббота, 23 Декабря 2017, 14:47 | Сообщение # 8439
    старожил
    Сейчас нет на сайте
    Цитата
    Есть и другие спрайты но ни какой из них не ворочается.

    Да вроде они не дочерние для персонажа. Но проверь может на самом обьекте Character1 висит лишний спрайт

    Цитата
    Возможно есть какой то способ в ручную указать именно этот спрайт?

    Добавить в класс поле public SpriteRenderer sprite и в инспекторое туда перетащить нужный спрайт
    BassPiraT92Дата: Суббота, 23 Декабря 2017, 14:51 | Сообщение # 8440
    участник
    Сейчас нет на сайте
    Цитата drcrack ()

    Да вроде они не дочерние для персонажа. Но проверь может на самом обьекте Character1 висит лишний спрайт


    Дружище! Ты просто мозг! Спасибо) с пустышки убрал спрайт рендер и все заработало)
    Поиск:

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