Результаты поиска
| |
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. Просто, на данный момент очень много свободного времени на работе, и можно заниматься ммм... саморазвитием, что ли ...
|
|
| |
MrBILL | Дата: Пятница, 22 Сентября 2017, 10:04 | Сообщение # 32 | Тема: Реально ли? |
частый гость
Сейчас нет на сайте
| Добрый день... интересует, возможно ли, на данный момент создать 3D игру на unity , посредством playMaker и uniRPG ? Используя данный софт, создать игру без умения кодить ? Планирую самостоятельно начать клепать игру, используя этот софт, покупая модели и добавляя их в игру. Если все пойдет как планируется, то набрать единомышленников. Или же, в принципе в одиночку сделать целиком игру - не реально?
|
|
| |
|