Пятница, 29 Марта 2024, 09:21

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Форум игроделов » Записи участника » MrBILL [32]
Результаты поиска
MrBILLДата: Понедельник, 23 Сентября 2019, 22:26 | Сообщение # 21 | Тема: Непонятки с лучами[РЕШЕНО]
частый гость
Сейчас нет на сайте
Что то не очень понимаю как... можно по подробнее ?
MrBILLДата: Понедельник, 23 Сентября 2019, 16:49 | Сообщение # 22 | Тема: Непонятки с лучами[РЕШЕНО]
частый гость
Сейчас нет на сайте
День добрый. Знатоки , прошу помощи... С горем пополам реализовал полупрозрачность окружения, которое мешает обзору. Делаю рпг с видом сверху. Я пускаю луч из камеры в игрока, если луч попадает в тег Environment - скрывает его(меняет материал на прозрачный) и наоборот. Работает практически нормально... Иногда получаются баги, если например персонаж идет по прямо на право вдоль 3 деревьев которые плотно находятся друг у друга, соответственно, луч попадает на 1 дерево, а потом НЕ прекращая попадать на тег Environment попадает на 2 дерево, в итоге скрывает 2 , и не ресетает 1 дерево и тд... причем то срабатывает, то нет... Я в замешательстве, кто может помочь ? Заранее благодарю.

Код на Environment:
Код
public class VisibleInvisible : MonoBehaviour
{
    [SerializeField] Material standard;
    [SerializeField] Material invisible;

  
    public void Visible()
    {
        MeshRenderer thisRenderer = GetComponent<MeshRenderer>();
        thisRenderer.material = standard;
    }

    public void Invisible()
    {
        MeshRenderer thisRenderer = GetComponent<MeshRenderer>();
        thisRenderer.material = invisible;
    }
}


И , соответственно код с бросанием луча:
Код
public class HideOtherMaterial : MonoBehaviour
{
    public GameObject prev = null;
    public Camera Maincamera;
    public GameObject player;

    public void Start()
    {
        player = GameObject.FindGameObjectWithTag("Player");
    }

    

    public void Update()
    {
        RaycastHit hit;
        Ray ray = new Ray(Maincamera.transform.position, player.transform.position - Maincamera.transform.position);
        Debug.DrawRay(Maincamera.transform.position, player.transform.position - Maincamera.transform.position, Color.green);
        if (Physics.Raycast(ray, out hit, 10000))
            {
                GameObject go = hit.collider.gameObject;
                if (go.tag == "Environment")
                {
                    if (prev != hit.collider.gameObject)
                    {
                        go.GetComponent<VisibleInvisible>().Invisible();
                        if (prev != null)
                        {
                            go.GetComponent<VisibleInvisible>().Visible();
                        }
                        prev = hit.collider.gameObject;
                    }              
                }
                else Reset();
            }
            else Reset();
    }

    public void Reset()
    {
        if (prev != null)
        {
            prev.GetComponent<VisibleInvisible>().Visible();
            prev = null;
        }
    }
}


Сообщение отредактировал MrBILL - Вторник, 24 Сентября 2019, 08:21
MrBILLДата: Пятница, 08 Марта 2019, 19:35 | Сообщение # 23 | Тема: Unity непонятки с костями
частый гость
Сейчас нет на сайте
Извиняюсь, забыл отписаться... переделал модель , перепривязал кости. И в Юнити двигаю не меш, а сами кости. Назначил пивот в нужном месте пустышкой и вроде сносно... всем спасибо за помощь!
MrBILLДата: Пятница, 08 Марта 2019, 19:15 | Сообщение # 24 | Тема: Получить данные через скрипт, после его поиска [решено]
частый гость
Сейчас нет на сайте
Цитата drcrack ()
hit.collider.GetComponent<Enemy>().Enemy_name


Огромное спасибо! Все гениальное просто =)
MrBILLДата: Пятница, 08 Марта 2019, 18:03 | Сообщение # 25 | Тема: Получить данные через скрипт, после его поиска [решено]
частый гость
Сейчас нет на сайте
Добрый день. Столкнулся с проблемой...
Имеется 2 кода:
Код
public class MoveInput : MonoBehaviour
{

    public Transform Pointer;
    public PlayerClickMovement PlayerClickMovement_;
    public float minMovRange;
    public SpriteRenderer cursor;
    public GameObject Target;  

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Mouse0))
        {

            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, 100))
            {
                if (hit.collider.tag == "Terrain")
                {
                    Debug.DrawLine(ray.origin, hit.point);
                    Pointer.position = new Vector3(hit.point.x, Pointer.position.y, hit.point.z);

                    if (Vector3.Distance(Pointer.position, PlayerClickMovement_.transform.position) > minMovRange)
                    {
                        PlayerClickMovement_.moving = true;
                        cursor.enabled = true;
                    }
                }

                if (hit.collider.tag == "Enemy")
                {
                    Debug.Log("ВОТ И ВРАГ!");
                    Target = hit.collider.gameObject;
                    
                }
            }
        }

        

    }


Если нажата левая кнопка мыши ,и она попала на террейн - устанавливаем 2д спрайт , и персонаж направляется в его сторону.
Если попадаем не в террейн, а в противника (enemy) , то он берется в "таргет".

Скрипт который есть на enemy:
Код
public class Enemy : MonoBehaviour
{

    public GameObject player;
    public MainStats MainStats;
    NavMeshAgent nav;
    [Header("Входящий урон от посохоа")]
    public float DMGStaff;
    [Header("Входящий урон от арбалета")]
    public float DMGCrossbow;
    [Header("Дистанция до player")]
    public float dist;
    [Header("Дистанция агро")]
    public float agro_radius = 15;
    [Header("Здоровье")]
    public float Health;
    [Header("Имя")]
    public string Enemy_name;
    [Header("Спокойствие")]
    public bool Idle = true;    
    
   

    void Start()
    {
        DMGStaff = MainStats.DamageStaff;   // Урон от посоха
        DMGCrossbow = MainStats.DamageCrossbow; // Урон с арбалета
        //Health = 20; // ХП
        nav = GetComponent<NavMeshAgent>();

    }

    void Death()
    {
        Destroy(gameObject);
    }

   
    void Update()
    {
        player = GameObject.FindGameObjectWithTag("Player"); // Назначаем Игрока
        dist = Vector3.Distance(player.transform.position, transform.position); // Дистанция до игрока

        if (!Idle & dist > agro_radius) // Близко нет игрока - включается скрипт с патрулированием
        {            
            gameObject.GetComponent<Enemy_patrol>().enabled = true; // включает патрулирование
        }

        if (!Idle & dist < agro_radius & dist > 4) // Игрок в зоне агро, но не в зоне атаки. Бежать за игроком
        {
            gameObject.GetComponent<Enemy_patrol>().enabled = false; // выключает патрулирование
            nav.enabled = true; // начинает движение
            nav.SetDestination(player.transform.position); // в сторону игрока
            gameObject.GetComponent<Animator>().SetBool("Run", true); // включает анимацию бега
        }

        if (!Idle & dist < 4)
        {
            gameObject.GetComponent<Animator>().SetTrigger("Attack"); // Игрок в зоне атаки. Атаковать.
            nav.enabled = false; // останавливает движение
        }

        if (Idle)
        {
            gameObject.GetComponent<Enemy_patrol>().enabled = false; // выключает патрулирование
            gameObject.GetComponent<Animator>().SetBool("Run", false); // выключает бег
            gameObject.GetComponent<Animator>().SetTrigger("Idle"); // включает анимацию покоя
            nav.enabled = false; // останавливает движение
            
        }
       

        if (Health <= 0)
        {
            Death();
        }
        return;
    }

    void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Crossbow_strela_trigger")
        {
            Health = Health - DMGCrossbow; // Если в коллайдер попал арбалет - минус ХП ( количество ХП берется из скрипта MainStats )
        }
        if (other.tag == "Staff_trigger")
        {
            Health = Health - DMGStaff; // Если в коллайдер попал посох - минус ХП ( количество ХП берется из скрипта MainStats )
        }
    }

}


Необходимо получить инфу из таргета... Enemy_name , в последствии еще уровень , мб какие-то статы, и закинуть это в канвас. Канвас планирую включать выключать в зависимости от того есть ли таргет.
Грубо говоря:
Таргета нет, канвас выключен , тыкаем по террейну - перемещаемся. Тыкаем на противника , он взялся в таргет, включился канвас и взял с таргета необходимую инфу, которую сразу вывел на экран. Тыкнули опять на экран , таргет сбросился - канвас выключился.
Гуглю второй день, ничего не могу найти =( Не могу получить в скрипте ссылку на таргет, который нахожу через hit.collider.tag.
Может что-то другое посоветуете ?


Сообщение отредактировал MrBILL - Пятница, 08 Марта 2019, 22:01
MrBILLДата: Понедельник, 04 Марта 2019, 15:30 | Сообщение # 26 | Тема: Unity непонятки с костями
частый гость
Сейчас нет на сайте
Менять скинмешрендер на мешрендер и мешфильтр не помогло =(
MrBILLДата: Понедельник, 04 Марта 2019, 14:56 | Сообщение # 27 | Тема: Unity непонятки с костями
частый гость
Сейчас нет на сайте
Да, модель в принципе только по костям и можно перемещать на сцене. По отдельности модель ( 2 куска) не перемешаются , не вращаются и вообще как болванки а не модель смотрятся ... странно... а кости в блендере должны двигаться вместе с мешом, когда именно меш двигаешь? Как на 3 скриншоте?
MrBILLДата: Понедельник, 04 Марта 2019, 14:29 | Сообщение # 28 | Тема: Unity непонятки с костями
частый гость
Сейчас нет на сайте
День добрый. Может кто подсказать ? Скорее всего, что-то делаю не правильно...
Есть арбалет. Поделил его на 2 части : верх с косточками для натягивания тетивы, и низ( подставка ).
Создал кости на верхней стороне, прикрепил через ctrl+p с автоматическими весами. Подкорректировал цвета, чтобы лишнего не цепляло, все норм. При импорте в юнити ничего не могу сделать по отдельности с моделью... Юнити видит арбалет как оболочку, которую нельзя покрутить, повертеть по частям. Только всю вместе. Специально разделил на 2 части и сделал пивот внизу у подставки, чтобы через скрипт адекватно поворачивать арбалет.
Подскажет, кто , может я кости закрепил не правильно? И меня интересует, а должны ли кости двигаться вместе с мешем, если менять ротейшн непосредственно меша?( на 3 скрине видно)
1
2
3
MrBILLДата: Пятница, 25 Мая 2018, 11:52 | Сообщение # 29 | Тема: PlayerPrefs
частый гость
Сейчас нет на сайте
День добрый. Столкнулся с проблемой. Не могу понять принцип работы playerprefs. Если сможете объяснить на примере работы моего скрипта , буду признателен.
Как я понимаю playerprefs работает как сохранение определенных переменных в реестре. Но я не могу понять как осуществляется сохранение и обращение к другим скриптам.
У меня есть скрипт:

Код
public class LevelSelector : MonoBehaviour {

        public SceneFader fader;
        public Button Level01;
        public Button Level02;
        public int _interactable;
        
        private void Start()
        {               
                
        }

        void Update()
        {
                
                        if (_interactable == 1)
                {
                        Level02.interactable = true;
                }
                        if ( _interactable == 0)
                {
                        Level02.interactable = false;
                }

        }

        public void Select (string levelName)
        {
                fader.FadeTo(levelName);
        }

}


У меня есть на данный момент 2 кнопки , которые расположены на сцене выбора уровня. Необходимо включить interactable кнопки по окончании другой сцены. Не понимаю как осуществить. Ввел новую переменную, чтобы работать с playerprefs , но не могу понять как именно... Подскажите как осуществить, или дайте ссылку на нормальную литературу по playerprefs. Благодарю.
MrBILLДата: Среда, 27 Сентября 2017, 14:35 | Сообщение # 30 | Тема: Течение времени
частый гость
Сейчас нет на сайте
Добрый день! Нигде не могу найти информацию, как сделать в unity, чтобы, например я поставил строиться объект, который, например будет строиться 3 часа. Вышел из игры на какое-то время, а он в это время продолжал строиться? В итоге я войду в игру через 4-5 и т.д. часов, а как вернусь объект уже достроен. Подскажите, пожалуйста.
MrBILLДата: Пятница, 22 Сентября 2017, 13:54 | Сообщение # 31 | Тема: Реально ли?
частый гость
Сейчас нет на сайте
Просто не знаю с чего начать... Нашел курсы (не знаю можно ли ссылку выложить) , вроде бы подробно и с программированием , и с основами unity. Просто, на данный момент очень много свободного времени на работе, и можно заниматься ммм... саморазвитием, что ли ... blink
MrBILLДата: Пятница, 22 Сентября 2017, 10:04 | Сообщение # 32 | Тема: Реально ли?
частый гость
Сейчас нет на сайте
Добрый день... интересует, возможно ли, на данный момент создать 3D игру на unity , посредством playMaker и uniRPG ? Используя данный софт, создать игру без умения кодить ? Планирую самостоятельно начать клепать игру, используя этот софт, покупая модели и добавляя их в игру. Если все пойдет как планируется, то набрать единомышленников.
Или же, в принципе в одиночку сделать целиком игру - не реально?
Форум игроделов » Записи участника » MrBILL [32]
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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