Пятница, 10 Мая 2024, 04:21

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

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

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

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

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • set16Дата: Вторник, 28 Января 2014, 14:36 | Сообщение # 5461
    постоянный участник
    Сейчас нет на сайте
    Цитата NEBR ()
    Ну вот код ошибки Assets/Scripts/Click.cs(7,25): error CS1525: Unexpected symbol `:', expecting `)', `,', `;', `[', or `='


    это синтаксис javas в С# запихнули что ли?

    Добавлено (28.01.2014, 14:36)
    ---------------------------------------------
    Цитата allods ()
    Как можно узнать, включена функция в данный момент или нет, какой самый лучший способ

    private bool Func() {
    // тело функции
    return true;

    if (Func())
    {
    //Функция сработала smile
    }


    =>The darkness of distant lands [3D]<=

    Сообщение отредактировал set16 - Вторник, 28 Января 2014, 14:37
    allodsДата: Вторник, 28 Января 2014, 15:54 | Сообщение # 5462
    почти ветеран
    Сейчас нет на сайте
    Цитата set16 ()
    private bool Func() {
    // тело функции
    return true;

    if (Func())
    {
    //Функция сработала smile
    }


    Теперь моя функция работает даже когда я ее не вызываю cry

    Добавлено (28.01.2014, 15:54)
    ---------------------------------------------
    Дело в том что мне нужно знать когда моя функция не работает, тоесть когда я ее не вызываю

    seamanДата: Вторник, 28 Января 2014, 16:40 | Сообщение # 5463
    старожил
    Сейчас нет на сайте
    Цитата
    Дело в том что мне нужно знать когда моя функция не работает, тоесть когда я ее не вызываю

    Смешной вопрос. Вы что многопоточное приложение делаете? В одном потоке (возможно) работает Ваша функция, в другом вы проверяете - работает ли она.
    Ну наверняка же не так! Ну а если не многопоточное приложение, то в тот момент, когда Вы проверяете работает ли функция - она 100000% НЕ работает! Проверяете же Вы не внутри нее!
    Другой вопрос - проверить не запускалась ли когда-нибудь вообще в прошлом эта функция. Тогда:

    Код
    public static starting;

    public void Func()
    {
        starting = true;
        ....
    }
    set16Дата: Вторник, 28 Января 2014, 16:45 | Сообщение # 5464
    постоянный участник
    Сейчас нет на сайте
    Цитата allods ()
    Дело в том что мне нужно знать когда моя функция не работает, тоесть когда я ее не вызываю


    Это как, если вы её не прописали ни где она не работает, а если куда то вписали то работает. И вам нужно узнать сработало условие или нет, в котором эта функция?


    =>The darkness of distant lands [3D]<=
    last2424Дата: Вторник, 28 Января 2014, 17:42 | Сообщение # 5465
    30 мл. блоков
    Сейчас нет на сайте
    Скрипт:
    Код
    Application.LoadLevel(Application.loadedLevel+1);

    Работает только на 1 уровне дальше он перестаёт работать? Может кто знает есть замена данному скрипту типа Application.nextLevel?


    Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
    LaushДата: Вторник, 28 Января 2014, 17:50 | Сообщение # 5466
    почти ветеран
    Сейчас нет на сайте
    Цитата last2424 ()
    Работает только на 1 уровне дальше он перестаёт работать? Может кто знает есть замена данному скрипту типа Application.nextLevel?

    Может просто у тебя в "Scanes In Build" не добавлены остальные сцены?

    Кто знает, есть скрипт из 2D Mario, вот код

    У меня ругается на
    Цитата
    Assets/Standard Assets (Mobile)/Scripts/PlayerControls.cs(47,17): error CS0246: The type or namespace name `AniSprite' could not be found. Are you missing a using directive or an assembly reference?

    Просто анимацию AniSprite.anim(координаты всякие в анимации не выставлял) я на Player повесил, почему выдает ошибку?


    [PC/Android/iOS/WEB] 30 Days to survive
    [PC] Dead Defense
    [PC] Саламандра - история пирата
    last2424Дата: Вторник, 28 Января 2014, 17:53 | Сообщение # 5467
    30 мл. блоков
    Сейчас нет на сайте
    Laush, добавлены. Я хотел сказать что с 1 на 2 уровнень он переходит, а со 2 на 3 не переходит. Хотя всё должно работать.

    Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
    NEBRДата: Вторник, 28 Января 2014, 18:00 | Сообщение # 5468
    почти ветеран
    Сейчас нет на сайте
    Цитата Laush ()
    Кто знает, есть скрипт из 2D Mario, вот код

    классные туторы, я тоже их проходил )))
    Скрипт AniSprite должен висеть на том же объекте, что и этот скрипт. Кстати, лучше GetComponent в Start() делай...


    King Size #Gamiron12
    last2424Дата: Вторник, 28 Января 2014, 21:34 | Сообщение # 5469
    30 мл. блоков
    Сейчас нет на сайте
    Вопрос остаётся открытым. Я могу перейти только с меню на 1 уровень и на сцену кредитс и с 1 уровня на 2 уровень дальше не могу(все уровни стоят в билд сетингсе).

    Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)

    Сообщение отредактировал last2424 - Вторник, 28 Января 2014, 21:34
    AdomДата: Среда, 29 Января 2014, 10:09 | Сообщение # 5470
    Печенька!
    Сейчас нет на сайте
    last2424, А не проще вписывать название сцены ? Хотя...Это займет больше места но все же.

    Добавлено (29.01.2014, 10:09)
    ---------------------------------------------
    Люди такой вопрос я сделал модель в Blender так вот кто может ее протикстурировать ? просто я с этим не очень дружу. Если что то не обижу + в репу biggrin

    NEBRДата: Среда, 29 Января 2014, 11:50 | Сообщение # 5471
    почти ветеран
    Сейчас нет на сайте
    last2424, я делал так. Публичная интовая переменная level. В каждому уровне в инспекторе прописываю циферку следующего уровня.
    и
    Код
    Application.LoadLevel(level);


    King Size #Gamiron12
    ParadizzzДата: Среда, 29 Января 2014, 17:11 | Сообщение # 5472
    был не раз
    Сейчас нет на сайте
    Как обратится к переменной из одного скрипта в другом скрипте, но так что бы значение переменной менялось только на одном объекте. Static, не помог так как глобально меняет значение.

    Пример: на сцене есть 3 бота, у них у всех один и тот же скрипт, но нужно что бы значение менялось только у того объекта с которым происходит взаимодействие.
    SendMessage мне не помог.
    set16Дата: Среда, 29 Января 2014, 17:15 | Сообщение # 5473
    постоянный участник
    Сейчас нет на сайте
    scripts = selectedUnit.GetComponent<NameScript>()
    scripts.Variable = true;

    Через GetComponent<NameScript>()


    =>The darkness of distant lands [3D]<=

    Сообщение отредактировал set16 - Среда, 29 Января 2014, 17:16
    allodsДата: Среда, 29 Января 2014, 18:33 | Сообщение # 5474
    почти ветеран
    Сейчас нет на сайте
    Можно как то сделать Инсталлер для игры? exe через который произойдет распаковка игры в нужное место
    set16Дата: Среда, 29 Января 2014, 18:36 | Сообщение # 5475
    постоянный участник
    Сейчас нет на сайте
    Win RaR умеет, даже ярлык создает на столе

    =>The darkness of distant lands [3D]<=
    allodsДата: Среда, 29 Января 2014, 18:45 | Сообщение # 5476
    почти ветеран
    Сейчас нет на сайте
    Цитата set16 ()
    Win RaR умеет, даже ярлык создает на столе

    Я думал о вин раре и 7 зипе но мне надо игру на Desura залить, не знаю норм так или нет

    Добавлено (29.01.2014, 18:45)
    ---------------------------------------------
    я вот что нарыл Smart Install Maker

    попробуем

    ParadizzzДата: Четверг, 30 Января 2014, 01:14 | Сообщение # 5477
    был не раз
    Сейчас нет на сайте
    как сделать precache в скрипте? что бы во время загрузки подгружал.

    Добавлено (30.01.2014, 01:14)
    ---------------------------------------------
    Чтобы например при первом выстреле не подгружались звуки и т.п.

    LaushДата: Четверг, 30 Января 2014, 15:46 | Сообщение # 5478
    почти ветеран
    Сейчас нет на сайте
    Привет, помоги разобраться, вот есть скрипт управление персом(вид с боку)
    Как переделать это на управление пальцем(для mobile устройств)
    Ну Jump я думаю переделать могу, а Вот не могу понять как переделать управление влево и вправо.
    Вот скрипт управление:
    Код
    using UnityEngine;
    using System.Collections;

    [RequireComponent(typeof(PlayerPhysics))]
    public class PlayerController : MonoBehaviour {
       
      // Player Handling
      public float gravity = 20;
      public float speed = 8;
      public float acceleration = 30;
      public float jumpHeight = 12;
       
      private float currentSpeed;
      private float targetSpeed;
      private Vector2 amountToMove;
       
      private PlayerPhysics playerPhysics;
       

      void Start () {
       playerPhysics = GetComponent<PlayerPhysics>();
      }
       
      void Update () {
       targetSpeed = Input.GetAxisRaw("Horizontal") * speed;
       currentSpeed = IncrementTowards(currentSpeed, targetSpeed,acceleration);
        
       if (playerPhysics.grounded) {
        amountToMove.y = 0;
         
        // Jump
        if (Input.GetButtonDown("Jump")) {
         amountToMove.y = jumpHeight;  
        }
       }
        
       amountToMove.x = currentSpeed;
       amountToMove.y -= gravity * Time.deltaTime;
       playerPhysics.Move(amountToMove * Time.deltaTime);
      }
       
      // Increase n towards target by speed
      private float IncrementTowards(float n, float target, float a) {
       if (n == target) {
        return n;  
       }
       else {
        float dir = Mathf.Sign(target - n); // must n be increased or decreased to get closer to target
        n += a * Time.deltaTime * dir;
        return (dir == Mathf.Sign(target-n))? n: target; // if n has now passed target then return target, otherwise return n
       }
      }
    }


    Вот таким образом я думаю переделать на такое управление:
    Код
    using UnityEngine;
    using System.Collections;

    public class Example : MonoBehaviour {

      // Update is called once per frame
      void Update () {
       if(Input.GetMouseButtonDown(0))          //если нажата левая кнопка мыши (тапнули пальцем на андроиде/айосе), то
       {
        RaycastHit hit;                     //создаем новую точку соприкосновения луча (назовем это так, хотя возможно правильно это обозвать подругому)
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);                 //и сам луч, который будет направлен от курсора мыши вглубь экрана
        if(Physics.Raycast(ray, out hit, Mathf.Infinity))                //если созданный луч соприкоснулся с объектом                  
        {
         if(hit.collider.name == "Button")                          //и если этот объект имеет имя "button", то
         {
          Debug.Log("Pressed left click.");//выполняем что-то
         }

    }
       }
      }
    }
       


    [PC/Android/iOS/WEB] 30 Days to survive
    [PC] Dead Defense
    [PC] Саламандра - история пирата
    castielblackДата: Четверг, 30 Января 2014, 16:12 | Сообщение # 5479
    почетный гость
    Сейчас нет на сайте
    Так-с, тебе нужен мультитач.

    Есть кнопка в виде спрайта, на спрайте должен быть коллайдер 2Д.
    Код

       private void Update()
       {
        int _count = Input.touchCount;

        if (_count > 0)
        {
         for (int i = 0; i < _count; i++)
         {
          Touch _touch = Input.GetTouch(i);

          Vector3 wp = Camera.main.ScreenToWorldPoint(_touch.position);
          Vector2 touchPos = new Vector2(wp.x, wp.y);
          //RaycastHit2D outHit = Physics2D.Raycast(Input.GetTouch(i).position,Input.GetTouch(i).position);
          Collider2D outHit = Physics2D.OverlapPoint(touchPos);
          if ( collider2D == outHit)
          {
                         // Нажали, а состояния фазы контроллируй как-нибудь сам, в зависимости что тебе надо)
          }
         }
        }
       }


    Знания : C#, Lua, C++, Unity, Dreemchest, DirectX 11
    Выпущенные проекты : BuildAndRun, Match 3 Cubes


    Сообщение отредактировал castielblack - Четверг, 30 Января 2014, 16:13
    last2424Дата: Четверг, 30 Января 2014, 20:06 | Сообщение # 5480
    30 мл. блоков
    Сейчас нет на сайте
    Есть 2 вопроса.
    Как мне убрать вращение в RigidBody?
    Как мне сделать так что бы физический объект не двигался при столкновений с boxcollider?


    Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)

    Сообщение отредактировал last2424 - Четверг, 30 Января 2014, 20:12
    Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Вопрос-[ответ] по Unity (Задаём свои вопросы)
    Поиск:

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