Вопрос-[ответ] по 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 таких же спрайтов вокруг и их удаление. Вот мой код(не работает ) Код 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
|
|
| |
|