forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Вопросы от новичка (http://forum.boolean.name/showthread.php?t=15809)

WISHMASTER35 17.01.2013 02:35

Ответ: Вопросы от новичка
 
Вложений: 1
Нарыл я метод рисование иерархии. Ну к черту в такой куче кода разбираться.
А что такое controlID? Часто вижу такое.
Еще куча каких-то методов для них типа GUIUtility.GetStateObject.

pax 17.01.2013 02:42

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 249740)
А что такое controlID? Часто вижу такое.

ID контрола - кнопки/текстового поля/тоггла и т.д. создается при отрисовке GUI, сам я не использовал, точнее использовал только сброс.

seaman 17.01.2013 09:24

Ответ: Вопросы от новичка
 
controlID используется например для отлова событий в конкретном элементе ГУИ
Код:

int id = GUIUtility.hotControl;
EventType type = Event.current.GetTypeForControl(id);
switch(type)
{
  case EventType.MouseDown:
...


Morganolla 17.01.2013 15:23

Ответ: Вопросы от новичка
 
Что то не получается отключить выполнение скрипта чилда (sPart.cs) в скрипте родителя (sParent.cs). Код:
Код:


public class sParent : MonoBehaviour {


        public GameObject  part;
        public sPart  sPartA ;
        void Start ()
        {
                sPartA=part.GetComponent<sPart>();
        }
       
        // Update is called once per frame
        void Update ()
        {
.................................................
            sPartA.enable=false;
........................................................

Здесь Юнити ругается на ошибки компилятора -
error CS1061: Type `sPart' does not contain a definition for `enable' and no extension method `enable' of type `sPart' could be found (are you missing a using directive or an assembly reference?)

Скрипт sPart существует и прикреплен к чилду как положено...

ВОПРОС СНЯТ - ДОСАДНАЯ ОШИБКА В НАПИСАНИИ enabled !!!

seaman 17.01.2013 15:35

Ответ: Вопросы от новичка
 
Внимательнее пишите. Нет enable, есть enabled

4yBa4Ok 17.01.2013 20:25

Ответ: Вопросы от новичка
 
Такой вопрос к знающим. Если я хочу сделать поезд, возможно ли его реализовать так: колесная пара(конвекс) через Hingle джоинт крепится к тележке, тележка к основе поезда через D6 джоинт? Или как будет лучше\ оптимизированней?

WISHMASTER35 17.01.2013 22:22

Ответ: Вопросы от новичка
 
seaman, я так понимаю можно как-то получить controlID следующего элемента?
И наверно например для GUILayout.BeginScrollView(scrollPosition) scrollPosition можно не хранить в глобальной переменной. Ведь стандартный элементы как-то хранят свои значения без глобальных переменных.
Только пока не пойму как это делается.
Update:
Не так как хотелось. controlID получается по позиции элемента т.е. до прорисовки элемента его controlID не получить((

seaman 17.01.2013 22:41

Ответ: Вопросы от новичка
 
Цитата:

до прорисовки элемента его controlID не получить
Вроде бы именно так. Там как-то сложновато.
ЗЫ Вот Нео и Pax сделали Antares. Судя по посту Pax без использования controlID. Так что думаю можно не заморачиваться и работать без него.

WISHMASTER35 17.01.2013 23:09

Ответ: Вопросы от новичка
 
seaman, да можно, но лучше разобраться и упростить себе немного код. Меня задалбливает создавать глобальную переменную для scrollPosition.
Я вот теперь попробую сделать, чтобы мышкой можно было перетаскивать элементы в моем списке. Тут точно придется использовать controlID, чтобы хранить смещение элемента при драге мыши.

WISHMASTER35 18.01.2013 02:31

Ответ: Вопросы от новичка
 
Есть такая проблема. Когда мышь уходит за пределы окна, то событие EventType.MouseUp не вызывается.
Как можно определить, что мышь ушла за окно?

pax 18.01.2013 07:08

Ответ: Вопросы от новичка
 
Например так:
PHP код:

var screenRect = new Rect(0,0Screen.widthScreen.height);
if(!
screenRect.Contains(Input.mousePosition))
{
   
// мышь вышла за пределы



GooV 18.01.2013 15:40

Ответ: Вопросы от новичка
 
всем привет.
мне нужно написать скрипт чтобы 3rd Person Controller, вставая на движущуюся платформу ехал за ней а не тупо скользил стоя на месте, я думаю можно сделать проверкой соприкосновения контроллера с платформой, узнать её движение и присвоить ему это движения, но вот вопрос, нужно как-то сложить и его движение, ну чтобы он мог по движущейся платформе двигаться.Я прошу гайдов по изменению и складыванию движения)

pax 18.01.2013 16:04

Ответ: Вопросы от новичка
 
Скрипт вешай на платформу и пусть она двигает все что с ней соприкасается на величину своего движения.

GooV 18.01.2013 16:06

Ответ: Вопросы от новичка
 
Цитата:

Я прошу гайдов по изменению и складыванию движения)
я не умею двигать и вычислять величину движения

Radnk 18.01.2013 18:29

Ответ: Вопросы от новичка
 
Сделал обычного персонажа в форме круга :-D (Скачать). Вроде бы по платформе двигается норм, но вот стоит соприкоснуться с кубом - его начинает тянуть в разные стороны. Из-за чего это может быть? :(

На самой сфере Sphere Collder, Rigdbody и скрипт.

Код:

using UnityEngine;
using System.Collections;

public class NewBehaviourScript : MonoBehaviour
{
    private Vector3 inp;
    private Vector3 delta;
    private Vector3 oldPos;
        private Vector3 gravity;
    private const float pi2 = Mathf.PI * Mathf.PI;

    public float diam = 7f;

    public float speed = 7f;

    public Transform cam;
        GameObject fire;

   
        // Use this for initialization
        void Start (){
            oldPos = transform.position;
                        Physics.gravity = new Vector3(0, -75, 0);
        }
       
        // Update is called once per frame
        void Update ()
{
        fire = GameObject.Find("fire");
        if (Input.GetButtonDown("Jump")){   
        fire.particleEmitter.emit = true;
        diam = 10f;
    speed = 10f;
        }
        if (Input.GetButtonUp("Jump")){
fire.particleEmitter.emit = false;
                diam = 4f;

    speed = 4f;
        }
            inp.x = Input.GetAxis("Horizontal");
            inp.z = Input.GetAxis("Vertical");
        }
    void FixedUpdate()
                {
                       
        Vector3 cp = transform.position - cam.position;
        cp.y = 0f;
        transform.Translate(Quaternion.LookRotation(cp) * inp * speed * Time.deltaTime, Space.World);
        delta = oldPos - transform.position;

        float ang = Mathf.Sin(delta.magnitude / diam / pi2) * Mathf.Rad2Deg;
        transform.RotateAround(Vector3.Cross(delta, Vector3.up), ang);
        oldPos = transform.position;
   
}
}



Часовой пояс GMT +4, время: 01:55.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot