Вопрос-[ответ] по Unity
|
|
QWER56 | Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Вопрос-[Ответ] по Unity3d
База скриптов Unity3d Курс Уроков по Unity 3D от Alcatraz
ConsMark - поисковик по интернет магазинам.
Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54 |
|
| |
Spaceship | Дата: Суббота, 07 Ноября 2015, 18:26 | Сообщение # 7401 |
постоянный участник
Сейчас нет на сайте
| beril, так ведь этот скрипт стандартный ассет
Часто мы позволяем себе думать, что древние люди подобны неопытным детям. Однако на самом деле, это мы дети перед их глубоким и чистым пониманием жизни.
|
|
| |
seaman | Дата: Суббота, 07 Ноября 2015, 20:30 | Сообщение # 7402 |
старожил
Сейчас нет на сайте
| Значит "поправили" его так. Выложите его.
|
|
| |
wasterman | Дата: Воскресенье, 08 Ноября 2015, 15:20 | Сообщение # 7403 |
частый гость
Сейчас нет на сайте
| Всем привет. Как организовать поворот камеры используя мышь в скрипте с#. П.с. Стандартное управление не идет так как уже использую Dual touchpads, пишу отдельно в скрипте.
Рок форева! Не графоМан! Холодный космос.
|
|
| |
Spaceship | Дата: Воскресенье, 08 Ноября 2015, 18:32 | Сообщение # 7404 |
постоянный участник
Сейчас нет на сайте
| seaman,
Код using System; using UnityEngine; using UnityStandardAssets.CrossPlatformInput;
namespace UnityStandardAssets.Characters.FirstPerson { [Serializable] public class MouseLook { public float XSensitivity = 2f; public float YSensitivity = 2f; public bool clampVerticalRotation = true; public float MinimumX = -90F; public float MaximumX = 90F; public bool smooth; public float smoothTime = 5f;
private Quaternion m_CharacterTargetRot; private Quaternion m_CameraTargetRot;
public void Init(Transform character, Transform camera) { m_CharacterTargetRot = character.localRotation; m_CameraTargetRot = camera.localRotation; }
public void LookRotation(Transform character, Transform camera) { float yRot = CrossPlatformInputManager.GetAxis("Mouse X") * XSensitivity; float xRot = CrossPlatformInputManager.GetAxis("Mouse Y") * YSensitivity;
m_CharacterTargetRot *= Quaternion.Euler (0f, yRot, 0f); m_CameraTargetRot *= Quaternion.Euler (-xRot, 0f, 0f);
if(clampVerticalRotation) m_CameraTargetRot = ClampRotationAroundXAxis (m_CameraTargetRot);
if(smooth) { character.localRotation = Quaternion.Slerp (character.localRotation, m_CharacterTargetRot, smoothTime * Time.deltaTime); camera.localRotation = Quaternion.Slerp (camera.localRotation, m_CameraTargetRot, smoothTime * Time.deltaTime); } else { character.localRotation = m_CharacterTargetRot; camera.localRotation = m_CameraTargetRot; } }
Quaternion ClampRotationAroundXAxis(Quaternion q) { q.x /= q.w; q.y /= q.w; q.z /= q.w; q.w = 1.0f;
float angleX = 2.0f * Mathf.Rad2Deg * Mathf.Atan (q.x);
angleX = Mathf.Clamp (angleX, MinimumX, MaximumX);
q.x = Mathf.Tan (0.5f * Mathf.Deg2Rad * angleX);
return q; }
} }
Часто мы позволяем себе думать, что древние люди подобны неопытным детям. Однако на самом деле, это мы дети перед их глубоким и чистым пониманием жизни.
|
|
| |
seaman | Дата: Воскресенье, 08 Ноября 2015, 19:03 | Сообщение # 7405 |
старожил
Сейчас нет на сайте
| А зачем Вы этот скрипт вообще пытаетесь навесить на объект? Он действует не так. Используйте префабы. Они тоже есть в стандартном ассете.
Да. Вот что значит - не использовать стандартные вещи...
|
|
| |
Spaceship | Дата: Воскресенье, 08 Ноября 2015, 19:55 | Сообщение # 7406 |
постоянный участник
Сейчас нет на сайте
| seaman, я создал префаб, и мне выдает ошибку+тоже самое выдает!
Часто мы позволяем себе думать, что древние люди подобны неопытным детям. Однако на самом деле, это мы дети перед их глубоким и чистым пониманием жизни.
|
|
| |
seaman | Дата: Воскресенье, 08 Ноября 2015, 22:23 | Сообщение # 7407 |
старожил
Сейчас нет на сайте
| Вы видите префабы в стандартных ассетах? Пока вы ничего не знаете - используйте уже готовые вещи.
|
|
| |
wasterman | Дата: Понедельник, 09 Ноября 2015, 17:59 | Сообщение # 7408 |
частый гость
Сейчас нет на сайте
| Ответил сам себе. Повороты Мышкой (чтоб не затерялось)
Рок форева! Не графоМан! Холодный космос.
Сообщение отредактировал wasterman - Понедельник, 09 Ноября 2015, 18:24 |
|
| |
Artem93region | Дата: Понедельник, 09 Ноября 2015, 21:31 | Сообщение # 7409 |
был не раз
Сейчас нет на сайте
| Всем привет! В общем осваиваю с# и столкнулся с такой проблемой, при вызове компонента через GetComponent определяются наверное все скрипты кроме тех что лежат в пепке ImageEffects, PlayerCamera.GetComponent<SepiaTone>().enabled = true; и вот SepiaTone он не определяет пишет ошибку SepiaTone-стандартный, отключение думаю правильно написано, уже кучу времени потратил Добавлено (09 ноября 2015, 21:13) --------------------------------------------- В общем не могу разобраться с тем как отключать скрипт эффекта на камере, в GetComponent юнити их просто не видит Добавлено (09 ноября 2015, 21:31) --------------------------------------------- В своей проблеме разобрался сам, может кому конечно пригодиться - чтобы GetComponent видел скрипты из папки imageeffect надо в скрипт добавить using UnityStandardAssets.ImageEffects;
|
|
| |
wasterman | Дата: Вторник, 10 Ноября 2015, 00:58 | Сообщение # 7410 |
частый гость
Сейчас нет на сайте
| Запарился немного, не могу проверить положение предмета по оси Y как это сделать? Вот бред который был у меня if Solnce.transform.position.y <90 {}
Рок форева! Не графоМан! Холодный космос.
|
|
| |
basist | Дата: Вторник, 10 Ноября 2015, 03:57 | Сообщение # 7411 |
пациент Flight Dream Studio
Сейчас нет на сайте
| wasterman, А (Solnce.transform.position.y <90) не надо в круглые скобки брать?
|
|
| |
Artem93region | Дата: Вторник, 10 Ноября 2015, 14:20 | Сообщение # 7412 |
был не раз
Сейчас нет на сайте
| Подскажите а как реализовать проверку видит ли камера тот или иной объект или нет, и проверку двигается ли объект или нет.
|
|
| |
SkorpyX | Дата: Вторник, 10 Ноября 2015, 15:10 | Сообщение # 7413 |
участник
Сейчас нет на сайте
| Цитата Artem93region ( ) как реализовать проверку видит ли камера тот или иной объект или нет Первая ссылка (или третья) : Unity
|
|
| |
wasterman | Дата: Пятница, 13 Ноября 2015, 00:45 | Сообщение # 7414 |
частый гость
Сейчас нет на сайте
| Появился вопрос. Стараюсь сделать прыжок но он получается какой-то дерганный. юзаю player.transform.position += player.transform.up * jump * Time.deltaTime;
есть также варианты //player.AddForce(jump, ForceMode.VelocityChange); //player.AddForce(acceleration, 0f, 0f, ForceMode.Acceleration); //rigidbody.AddForce(new Vector3(0,jump,0)); но ни один из них не работает, Юнька ругается на AddForce, что делать?
Рок форева! Не графоМан! Холодный космос.
|
|
| |
beril | Дата: Пятница, 13 Ноября 2015, 11:37 | Сообщение # 7415 |
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
| Цитата wasterman ( ) но ни один из них не работает, Юнька ругается на AddForce, что делать? Вместо rigidbody => GetComponent<Rigidbody> ()
Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
|
|
| |
Artem93region | Дата: Пятница, 13 Ноября 2015, 17:31 | Сообщение # 7416 |
был не раз
Сейчас нет на сайте
| Народ, как сделать проверку на то нажата ли текстура которая показана на скриншоте, а то если указать обычную guitexturs то получается, а и из image (тот что из UI) не вставляется и в справке разобраться не могу
if (guiNitroElement.HitTest(touch.position)) { }
http://s1.uploadpics.ru/images/Z1pI5bbEKe.bmp
Сообщение отредактировал Artem93region - Пятница, 13 Ноября 2015, 17:33 |
|
| |
SkorpyX | Дата: Пятница, 13 Ноября 2015, 20:23 | Сообщение # 7417 |
участник
Сейчас нет на сайте
| Цитата Artem93region ( ) а и из image (тот что из UI) не вставляется и в справке разобраться не могу Сам с этим долго разбирался, вот пример кода js :
Код #pragma strict
import UnityEngine.UI; import UnityEngine.EventSystems;
class Название_Вашего_Скрипта extends MonoBehaviour implements IPointerDownHandler, IPointerUpHandler {
function Start () { } function OnPointerDown (data : PointerEventData) { } function Update () { } function OnPointerUp (data : PointerEventData) { }
}
В implements подставляете нужные вам интерфейсы, вот список : EventSystems.IPointerDownHandler
|
|
| |
Artem93region | Дата: Пятница, 13 Ноября 2015, 21:27 | Сообщение # 7418 |
был не раз
Сейчас нет на сайте
| Что-то я не могу разобраться у вас JS, а я на CS делаю, перевёл скрипт получилось вот так:
using UnityEngine.UI; using UnityEngine.EventSystems;
public class MYCLASSNAME : MonoBehaviour {
void Start (){
}
void OnPointerDown ( PointerEventData data ){
}
void Update (){
}
void OnPointerUp ( PointerEventData data ){
}
}
запускается без ошибок, но вот у меня это скрипт висеть будет на одном из обьектов в сцене и в нём мне надо будет сделать проверку на нажатие (на сенсоре) на текстуру которая взята из нового UI на эту строчку он так же и ругается if (guiNitroElement.HitTest(touch.position)) именно на HitTest это если (не ругается если только пишу public GUITexturs guiNitroElement;) а так пробовал уже и public Sprite guiNitroElement; и public Texturs guiNitroElement; в общем уже и не знаю что делать с этим новым UI, то есть как к нему обращаться, а ведь некоторые значения монобехавиор видит
И если с этим методом ни чего не выйдет то тогда такой вопрос: как уничтожить триггер в котором я нахожусь из другого скрипта, например в новом UI я сделал кнопку со своим скриптом и у меня на сцене несколько одинаковых тригеров с одинаковыми в них обьектами и мне надо сделать так, что бы я мог убирать только те в которых я нахожусь?
Сообщение отредактировал Artem93region - Пятница, 13 Ноября 2015, 21:40 |
|
| |
SkorpyX | Дата: Пятница, 13 Ноября 2015, 22:23 | Сообщение # 7419 |
участник
Сейчас нет на сайте
| Artem93region, данный скрипт вешается на нужный UI элемент. Вы забыли про подключение интерфейсов, четвёртая строчка должна выглядеть так :
Код public class MYCLASSNAME : MonoBehaviour, IPointerDownHandler, IPointerUpHandler {
Цитата Artem93region ( ) И если с этим методом ни чего не выйдет то тогда такой вопрос: как уничтожить триггер в котором я нахожусь из другого скрипта, например в новом UI я сделал кнопку со своим скриптом и у меня на сцене несколько одинаковых тригеров с одинаковыми в них обьектами и мне надо сделать так, что бы я мог убирать только те в которых я нахожусь? Можно добавить скрипт на триггер, в котором будет массив коллайдеров в триггере, и проверять принадлежит ли игрок массиву, или создать boolean переменную. Рассмотрим подробнее второй вариант:
1) Присваиваете тэг префабу игрока "Player", создаёте скрипт, который вешаете на триггер. В нём создаёте boolean переменную. В OnTriggerEnter проверяете если тэг коллайдера равен "Player", то присваеваете bool = true. Аналогично в OnTriggerExit проверяете и присваиваете bool = false. 2) Присваиваете префабу триггера свой тэг, например "Trigger". В скрипте кнопки в OnPointerDown ищете все объекты с данным тэгом, через GetComponent ищете скрипт триггера и проверяете bool переменную, если она true, то удаляете префаб
Сообщение отредактировал SkorpyX - Пятница, 13 Ноября 2015, 22:23 |
|
| |
wasterman | Дата: Суббота, 14 Ноября 2015, 10:30 | Сообщение # 7420 |
частый гость
Сейчас нет на сайте
| ошибкаЦитата beril ( ) Вместо rigidbody => GetComponent<Rigidbody> () GetComponent<Rigidbody> ().AddForce (new Vector3(0,jump,0)); Для прыжка тоже не подходит! Вроде все в норме но после запуска и нажатия пробела выскакивает ошибка! Что то вроде this is not rigibody object player. but get component acess to rigitbody (написано по памяти).
Рок форева! Не графоМан! Холодный космос.
Сообщение отредактировал wasterman - Суббота, 14 Ноября 2015, 10:34 |
|
| |