Суббота, 28 Декабря 2024, 12:32

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-[ответ] по 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
    Поиск:

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