Суббота, 16 Ноября 2024, 18:33

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

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

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

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

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • URGINSANДата: Воскресенье, 22 Сентября 2013, 18:29 | Сообщение # 4621
    почти ветеран
    Сейчас нет на сайте
    Kira, спасибо

    Добавлено (22.09.2013, 18:29)
    ---------------------------------------------
    Ребят помогите пожалуйста, мне нужно сделать поворот руля, чтобы она ограничивался 45 градусом, и возвращался на место, когда колеса стоят прямо. Помогите, весь интернет облазил не нашел. Понимаю, что можно сделать по типу того же колеса, но пока из уроков у меня не получается код выдернуть, все как-то уж замудренно( Помогите пожалуйста.


    Я на драйве
    lentinantДата: Понедельник, 23 Сентября 2013, 06:25 | Сообщение # 4622
    ленивый программист
    Сейчас нет на сайте
    Цитата (Kira)
    левл нужно собирать в редакторе. А затем собирать во время игры.

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

    Добавлено (23.09.2013, 04:19)
    ---------------------------------------------
    Сори за крайне нубский вопрос, но как можно идеально состыковать два элемента? У меня есть префаб платформы, я выставляю несколько подряд так, чтобы между ними не было промежутка (то есть, ставлю следующий префаб на расстоянии, равном половине его ширины), однако тело, которое двигается по созданной таким образом дорожке (движущей силой является AddForce в ригидбоди), постоянно натыкается на "швы" между префабами, не смотря на то, что все префабы на одной высоте. Просто скейлить платформу я не могу, поскольку в будущем на нее будет натянута текстура, а может быть, сама платформа будет моделью, которую нельзя будет масштабировать.

    Добавлено (23.09.2013, 04:30)
    ---------------------------------------------
    Отбой, проблема была не в стыковке, а в одном глюке, связанном с коллизией. У меня просто для прыжка было задано, что если персонаж перестает к чему-то прикасаться, то он не может прыгать (для избежания бесконечных прыжков), а возврат булевской переменной был на OnCollisionEnter. Однако, если стоит несколько платформ подряд, то сначала игрок прикасается ко второй переменной (вызывается OnCollisionEnter), таким образом, он определенное время касается одновременно обоих платформ; и уже когда он полностью на второй платформе, то перестает касаться первой платформы, и вызывается OnCollisionExit, которая заставляет его считать, что он в прыжке, а разгон идет только при условии, что игрок на земле. Решилось заменой OnCollisionEnter на OnCollisionStay.
    Это так, для будущих поколений, вдруг у кого похожая проблема возникнет.

    Добавлено (23.09.2013, 04:36)
    ---------------------------------------------
    Хотя, все таки, частично вопрос остается, так как иногда персонаж натыкается на невидимое препятствие и подпрыгивает.

    Добавлено (23.09.2013, 06:25)
    ---------------------------------------------
    Ладно, очевидно, это косяк физики юньки. Попробую решить уменьшением Min Penetration for Penalty в настройках физики или опуская каждый следующий префаб на небольшую величину.


    Когда-то тут будут ссылки на крутые проекты. Или нет.

    Сообщение отредактировал lentinant - Понедельник, 23 Сентября 2013, 04:31
    KiraДата: Понедельник, 23 Сентября 2013, 17:02 | Сообщение # 4623
    заслуженный участник
    Сейчас нет на сайте
    lentinant, есть такой контроллер, 2dplatfor controller, он сделан на реях. Может тебе его заюзать или попробовать сделать самому. Ну и колайдеры, вычисляй длину и ставь 1 длинный.

    Unity3d разработчик на С#. Лучшее спасибо + в репу.
    "Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
    "Человек, который никогда не ошибался никогда не пробовал ничего нового".
    "Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн
    AdomДата: Вторник, 24 Сентября 2013, 18:23 | Сообщение # 4624
    Печенька!
    Сейчас нет на сайте
    Как можно сократить количество выстрелов ? А то мой враг псих какой то =)
    Код
    using UnityEngine;
    using System.Collections;

    public class Ai : MonoBehaviour {
    // Make sure there is always a character controller
    public CharacterController controller;

    // скорость ходьбы и скорость поворота в секунду
    public float moveSpeed = 2;
    public float turnSpeed = 90;

    Transform spawnPoint;
    float bulletSpeed = 20;

    private CharacterController _controller;
    private Transform _thisTransform;
    private Transform playerTransform;

    public Transform bullet; //Префаб патрона
    public int BulletForce = 5000; //Скорость патрона
    public AudioClip Fire; //Аудиоклип воспроизводящийся во время стрельбы

    public float Range = 1000;
    public GUIText color;
    public float xp =0;
    public int kill = 0;
       
    void  Start (){
             // Получаем контроллер
             _controller = GetComponent<CharacterController>();

             // Получаем компонент трансформации объекта, к которому привязан данный компонент
             _thisTransform = transform;

             // Получаем компонент трансформации игрока
             if (GameObject.FindWithTag("Player"))
        playerTransform = GameObject.FindWithTag("Player").transform;
       

         }
    void  Update (){
             // направление на игрока
       if(GameObject.FindWithTag("Player") != null){
             Vector3 playerDirection = (playerTransform.position - _thisTransform.position).normalized ;
        
             // угол поворота на игрока
             float angle = Vector3.Angle(_thisTransform.forward, playerDirection);

             // максимальный угол поворота на текущем кадре
             float maxAngle = turnSpeed * Time.deltaTime;

             // Вычисляем прямой поворот на игрока
             Quaternion rot = Quaternion.LookRotation(playerTransform.position - _thisTransform.position);
        
             // поворачиваем врага на игрока с учетом скорости поворота
             if (maxAngle < angle)
             {
                 _thisTransform.rotation = Quaternion.Slerp(_thisTransform.rotation, rot, maxAngle / angle);
             }
             else
        

             {
                 _thisTransform.rotation = rot;
             }

             // если дистанция до игрока больше трех метров
             if (Vector3.Distance(playerTransform.position, _thisTransform.position) >100.0f)
             {
                 // двигаемся к игроку
                 _controller.Move(_thisTransform.forward * moveSpeed * Time.deltaTime);
             }
             else // если меньше или равна трем метрам
             { if (Vector3.Distance(playerTransform.position, _thisTransform.position)  > 0)
             {
             
                 Attack();// здесь например стреляем в игрока
             
       
        }
    }
             // гравитация
             _controller.Move(Vector3.down * 10.0f * Time.deltaTime);
          
        }
      }

    void FixedUpdate(){
    if(xp > 99){
    kill +=1;  
    if(kill > 0){     
    xp -=100;
    }
    }
    if(GameObject.FindWithTag("Player").GetComponent<XP>().CurXP < 0){    
    Destroy(GameObject.FindWithTag("Coop"));
    }    
    }
    // Update is called once per frame
    void Attack () {
    Vector3 DirectionRay = transform.TransformDirection(Vector3.forward);     //задаём направления стрельбы
    RaycastHit Hit;   
    if(Physics.Raycast(transform.position, DirectionRay,out Hit ,Range)){
    if(Hit.collider.tag == "Player"){
    xp +=1;     
    GameObject.FindWithTag("Player").GetComponent<XP>().CurXP -= Random.Range(0,5);    
    }
    }
    }  
    }
    lentinantДата: Вторник, 24 Сентября 2013, 23:51 | Сообщение # 4625
    ленивый программист
    Сейчас нет на сайте
    Adom, делаешь переменную, обозначающую минимальный временной промежуток между выстрелами (fireInterval), делаешь переменную, которая будет обозначать, когда может быть воспроизведен следующий выстрел (nextShoot), перед выстрелом сравниваешь текущее время с переменной следующего выстрела (Time.time > nextShoot), и стреляешь только если условие оправдывается, после чего обновляешь переменную следующего выстрела (nextShoot += fireInterval). Не просто, а очень просто.

    Когда-то тут будут ссылки на крутые проекты. Или нет.
    allodsДата: Вторник, 24 Сентября 2013, 23:53 | Сообщение # 4626
    почти ветеран
    Сейчас нет на сайте
    Кто может подсказать, что за код у кнопок джойстика "лево право низ верх"?
    перепробовал все не нашел .
    VigilemДата: Среда, 25 Сентября 2013, 00:00 | Сообщение # 4627
    частый гость
    Сейчас нет на сайте
    Цитата (allods)
    Кто может подсказать, что за код у кнопок джойстика "лево право низ верх"?
    перепробовал все не нашел .

    Ни это ли ищите?
    allodsДата: Среда, 25 Сентября 2013, 01:23 | Сообщение # 4628
    почти ветеран
    Сейчас нет на сайте
    Цитата (Vigilem)
    Ни это ли ищите?

    Да это, спасибо
    Это не кнопки а Аксисы тьфу!

    Добавлено (25.09.2013, 00:48)
    ---------------------------------------------
    У меня какой то баг произошёл, после каждого теста с некоторых объектов слетает ихний материал. Каждый раз его выставлять нужно иначе без материала будут. У кого такая была проблема?

    Добавлено (25.09.2013, 01:23)
    ---------------------------------------------
    И еще одна проблема, GUItext не работает, просто ничего нету, куда я его не двигал, какой размер ему не ставил. И на камере слой для GUI висит

    AdomДата: Среда, 25 Сентября 2013, 12:29 | Сообщение # 4629
    Печенька!
    Сейчас нет на сайте
    lentinant,Поможешь еще разобраться с управлением под андроид ?
    lentinantДата: Среда, 25 Сентября 2013, 17:08 | Сообщение # 4630
    ленивый программист
    Сейчас нет на сайте
    Adom, не могу помочь с тем, чего сам не знаю =(( Впрочем, судя по референсу класса Input, это не особо сложно.

    Когда-то тут будут ссылки на крутые проекты. Или нет.
    KiraДата: Среда, 25 Сентября 2013, 17:53 | Сообщение # 4631
    заслуженный участник
    Сейчас нет на сайте
    Цитата (allods)
    У меня какой то баг произошёл, после каждого теста с некоторых объектов слетает ихний материал. Каждый раз его выставлять нужно иначе без материала будут. У кого такая была проблема?

    проверь оригиналы префабов, если что рви связь.
    Цитата (allods)
    И еще одна проблема, GUItext не работает, просто ничего нету, куда я его не двигал, какой размер ему не ставил. И на камере слой для GUI висит

    как вы создаете ГУИтекст?


    Unity3d разработчик на С#. Лучшее спасибо + в репу.
    "Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
    "Человек, который никогда не ошибался никогда не пробовал ничего нового".
    "Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн
    SunMilleДата: Среда, 25 Сентября 2013, 18:20 | Сообщение # 4632
    был не раз
    Сейчас нет на сайте
    Помогите исправить скрипт для игры типа bejeweled, чтобы при нажатии на спрайт проходила проверка на наличие как минимум 3 таких же спрайтов вокруг и их удаление. Вот мой код(не работает sad )
    Код
    void Update(){
       if(Input.GetMouseButtonDown(0)){
        RaycastHit hit;
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        if(Physics.Raycast(ray, out hit))
        if(hit.transform != null){
         if(hit.transform.gameObject.name.Equals("Green")){
          float x = hit.transform.gameObject.transform.position.x;
          float z = hit.transform.gameObject.transform.position.z;
          StartCheck(hit.transform.gameObject, x ,z);
         }else if(hit.transform.gameObject.name.Equals("Pink")){
          float x = hit.transform.gameObject.transform.position.x;
          float z = hit.transform.gameObject.transform.position.z;
         }else if(hit.transform.gameObject.name.Equals("Blue")){
          float x = hit.transform.gameObject.transform.position.x;
          float z = hit.transform.gameObject.transform.position.z;
         }else if(hit.transform.gameObject.name.Equals("Yellow")){
          float x = hit.transform.gameObject.transform.position.x;
          float z = hit.transform.gameObject.transform.position.z;
         }
        }
       }
      }
      private List<GameObject>m_listOfObjectsToRemove = new List<GameObject>();
      private int m_minimumNoOfObjects = 3;
        
      private void StartCheck(GameObject startObject, float x, float z){
       m_listOfObjectsToRemove.Add(startObject);
       CheckNeighbours(startObject, null, x, z);
         
       GameObject previousStartObject = startObject;
         
       for(int i = 1; i < m_listOfObjectsToRemove.Count; ++i){
        CheckNeighbours(m_listOfObjectsToRemove[i], previousStartObject, x, z);
        previousStartObject = m_listOfObjectsToRemove[i];
       }
         
       if(m_listOfObjectsToRemove.Count > m_minimumNoOfObjects){
        for(int i = 1; i < m_listOfObjectsToRemove.Count; ++i){
         Destroy(m_listOfObjectsToRemove[i]);
        }
         m_listOfObjectsToRemove.Clear();
       }
      }
       
      GameObject leftNeighbourObject;
      GameObject rightNeighbourObject;
      GameObject aboveNeighbourObject;
      GameObject belowNeighbourObject;
       
      GameObject GetObject(float x, float z){
       GameObject Block = null;
        
       Vector3 position = new Vector3(x, 0, z);
        
       Collider[] cols = Physics.OverlapSphere(position, 0.0f);
       float dist = Mathf.Infinity;
       foreach(Collider col in cols){
        float d = Vector3.Distance(position, col.transform.position);
        if(d < dist){
         dist = d;
         Block = col.gameObject;
        }
       }
       return Block;
      }
       
      private void CheckNeighbours(GameObject startObject, GameObject previousStartObject, float x, float z){
       leftNeighbourObject  = GetObject(x+1, z);
       rightNeighbourObject  = GetObject(x-1, z);
       aboveNeighbourObject  = GetObject(x, z-1);
       belowNeighbourObject  = GetObject(x, z+1);
        
       if(leftNeighbourObject != null){
        if(leftNeighbourObject != previousStartObject){
         m_listOfObjectsToRemove.Add(leftNeighbourObject);
        }
       }
       if(rightNeighbourObject != null){
        if(rightNeighbourObject != previousStartObject){
         m_listOfObjectsToRemove.Add(rightNeighbourObject);
        }
       }
       if(aboveNeighbourObject != null){
        if(aboveNeighbourObject != previousStartObject){
         m_listOfObjectsToRemove.Add(aboveNeighbourObject);
        }
       }
       if(belowNeighbourObject != null){
        if(belowNeighbourObject != previousStartObject){
         m_listOfObjectsToRemove.Add(belowNeighbourObject);
        }
       }
      }


    @sunmille
    allodsДата: Среда, 25 Сентября 2013, 18:29 | Сообщение # 4633
    почти ветеран
    Сейчас нет на сайте
    Цитата (Kira)

    проверь оригиналы префабов, если что рви связь.

    Именно с префабов слетают

    Цитата (Kira)
    как вы создаете ГУИтекст?

    GameObject>Creat Other>GUI text

    В туторах смотрел там сразу в серединке на экране текст вылетает
    lentinantДата: Среда, 25 Сентября 2013, 19:02 | Сообщение # 4634
    ленивый программист
    Сейчас нет на сайте
    Чем может быть вызвано раскорячивание элемента, который привязанный к пустому объекту, если вращать этот самый объект?
    Осторожно, большая картинка.

    Это обычный масштабированный куб.

    Добавлено (25.09.2013, 19:01)
    ---------------------------------------------
    Да, подобное случается только если этот пустой объект прикрепить к другому объекту.

    Добавлено (25.09.2013, 19:02)
    ---------------------------------------------
    И еще вопрос, почему при вращении пустого объекта, внутри которого есть другой объект, то пустой объект вращается вокруг центра объекта внутри него, меняя свои координаты, а не служит пивотом.


    Когда-то тут будут ссылки на крутые проекты. Или нет.

    Сообщение отредактировал lentinant - Среда, 25 Сентября 2013, 19:02
    NEBRДата: Среда, 25 Сентября 2013, 19:20 | Сообщение # 4635
    почти ветеран
    Сейчас нет на сайте
    Цитата (allods)
    У меня какой то баг произошёл, после каждого теста с некоторых объектов слетает ихний материал. Каждый раз его выставлять нужно иначе без материала будут. У кого такая была проблема?

    была такая фигня когда уже собранный андроид проект переключил на ПК версию. Пришлось восстанавливать материалы


    King Size #Gamiron12
    KiraДата: Среда, 25 Сентября 2013, 19:49 | Сообщение # 4636
    заслуженный участник
    Сейчас нет на сайте
    Кто знает как использовать #Define в сишарпе или глючные enum'ы.
    enum Attribute
    { STRENGHT=1,DEXTERITY,MANA,MANA_MAX,HITPOINT,HITPOINT_MAX}

    что бы использовать их нужно много писать того, чего не хочется.
    Attr[(int)Attribute.Dexterity]=10;
    блин как убрать это приведение типов (int ).


    Unity3d разработчик на С#. Лучшее спасибо + в репу.
    "Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
    "Человек, который никогда не ошибался никогда не пробовал ничего нового".
    "Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн
    YorkДата: Среда, 25 Сентября 2013, 20:08 | Сообщение # 4637
    был не раз
    Сейчас нет на сайте
    подскажите пожалуйста в чем причина прозрачности боковых сторон в модели. Пробовал инвертировать нормали в 3d редакторе- не помогает. единственный способ который помогает- это либо экструдирование фейсов либо дублирование объекта с величиной Scale=-1 и их комбинирование. но эти способы значительно добавляют полигонов и не хотелось бы их использовать. Еще где то читал об внесении изменения в основной шейдер, но автор не рекомендует пользоваться этим способом.Если кто еще знает как это исправить- подскажите пожалуйста[/spoiler]

    Добавлено (25.09.2013, 20:05)
    ---------------------------------------------
    подскажите пожалуйста в чем причина прозрачности боковых сторон в модели. Пробовал инвертировать нормали в 3d редакторе- не помогает. единственный способ который помогает- это либо экструдирование фейсов либо дублирование объекта с величиной Scale=-1 и их комбинирование. но эти способы значительно добавляют полигонов и не хотелось бы их использовать. Еще где то читал об внесении изменения в основной шейдер, но автор не рекомендует пользоваться этим способом.Если кто еще знает как это исправить- подскажите пожалуйста[/spoiler]

    Добавлено (25.09.2013, 20:08)
    ---------------------------------------------
    подскажите пожалуйста в чем причина прозрачности боковых сторон в модели. Пробовал инвертировать нормали в 3d редакторе- не помогает. единственный способ который помогает- это либо экструдирование фейсов либо дублирование объекта с величиной Scale=-1 и их комбинирование. но эти способы значительно добавляют полигонов и не хотелось бы их использовать. Еще где то читал об внесении изменения в основной шейдер, но автор не рекомендует пользоваться этим способом.Если кто еще знает как это исправить- подскажите пожалуйста[/spoiler]

    NEBRДата: Среда, 25 Сентября 2013, 20:34 | Сообщение # 4638
    почти ветеран
    Сейчас нет на сайте
    Kira, мне Enum нравиться. Че то не замечал его глюков ) Нужно только добавить для него Collections.Generic, но об этом, я думаю, ты знаешь ) Насчет приведения типов - без него там ошибка чтоли, зачем его убирать?

    Добавлено (25.09.2013, 20:34)
    ---------------------------------------------
    York, а что за модель, боковая сторона ее (которая прозрачная), она сделана из примитива плоскость? Если да, то вариант по моему только один - переделывать ее таким образом чтобы плоскость была видна только с одной стороны (например использовать вместо нее сильно сплющенный куб)


    King Size #Gamiron12
    allodsДата: Среда, 25 Сентября 2013, 20:37 | Сообщение # 4639
    почти ветеран
    Сейчас нет на сайте
    Цитата (York)
    подскажите пожалуйста в чем причина прозрачности боковых сторон в модели.

    Ты уверен что правильно вывернул нормали?
    YorkДата: Среда, 25 Сентября 2013, 21:28 | Сообщение # 4640
    был не раз
    Сейчас нет на сайте
    боковая сторона сделана плоскостью, а нормали если вывернуть еще раз то не видно наоборот противоположную сторону 2es4k
    Поиск:

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