Воскресенье, 24 Ноября 2024, 15:56

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Вращение и поворот обьекта
ZVENДата: Воскресенье, 11 Сентября 2016, 20:22 | Сообщение # 21
почетный гость
Сейчас нет на сайте
Так и со Stay не работает.
Лично я в прошлом проекте Enter юзал, там канало, правда по-другому написано было.
Код
    void Update()
    {
        //LevelText.text = LevelText.text + level;
        MoveRunner();
    }

    void MoveRunner()
    {
        transform.RotateAround(new Vector3(0f, -1.9f, 0f), Vector3.forward, -50 * Time.deltaTime);
    }

    void OnTriggerStay2D(Collider2D other)
    {
        if  ((Input.GetMouseButtonDown(0)) && (other.gameObject.CompareTag("Give")) )
        {
            Debug.Log("OK");
        }
    }
}
LertmindДата: Воскресенье, 11 Сентября 2016, 20:31 | Сообщение # 22
заслуженный участник
Сейчас нет на сайте
Ох, попробовал бы сначала без условия, потом только с мышью. Подозреваю, что тег ты не выставил или Rigidbody2D не повесил.
ZVENДата: Понедельник, 12 Сентября 2016, 12:35 | Сообщение # 23
почетный гость
Сейчас нет на сайте
Вот я тормоз. А Rigidbody2D то не повесил

Добавлено (11 сентября 2016, 20:50)
---------------------------------------------
Потом проверю, отпишусь

Добавлено (11 сентября 2016, 21:09)
---------------------------------------------
Дело лучше, клик смог отследить.

Добавлено (12 сентября 2016, 12:35)
---------------------------------------------
А если у меня есть такой скрипт в файле Ball.cs то как вызвать NewPosBall() в другом файле?

Код
public class Ball : MonoBehaviour {

    private float distance = 2.48f;
    private float angle;
    private float x, y;

    void Start()
    {
        NewPosBall();
    }
    
    void Update()
    {
        
    }

    public void NewPosBall()
    {
        angle = Random.Range(0, 360);
        angle = angle * Mathf.Deg2Rad;

        float x = 0 + Mathf.Cos(angle) * distance;
        float y = -1.9f + Mathf.Sin(angle) * distance;
        transform.position = new Vector2(x, y);
    }
}
EchoITДата: Понедельник, 12 Сентября 2016, 14:12 | Сообщение # 24
старожил
Сейчас нет на сайте
ZVEN,
Код
ballObject.GetComponent<Ball>().NewPosBall();
или просто
Код
ballObject.SendMessage("NewPosBall");

где ballObject - объект, на котором висит скрипт.


Долгожданный анонсик: State of War

Сообщение отредактировал EchoIT - Понедельник, 12 Сентября 2016, 14:12
ZVENДата: Понедельник, 12 Сентября 2016, 20:53 | Сообщение # 25
почетный гость
Сейчас нет на сайте
Ребята, а где можно посмотреть кроме справки разбор всех основных классов, которые могут использоваться?
Желательно на русском.
А то бывает вкратце знаешь, начинаешь изобретать велосипед, а оно и без велосипеда есть.

Добавлено (12 сентября 2016, 15:07)
---------------------------------------------
Чет не робит, мож что не так делаю
Пробовал так, без экземпляра не видит.

Код
Ball b = new Ball();
            b.GetComponent<Ball>().NewPosBall();

Добавлено (12 сентября 2016, 20:53)
---------------------------------------------
Попробовал еще так

Код
            Ball bl = new Ball();
            bl.SendMessage("NewPosBall");


Пишет:
You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
UnityEngine.MonoBehaviour:.ctor()
Ball:.ctor()
Game:OnTriggerStay2D(Collider2D) (at Assets/Scripts/Game.cs:35)

и

NullReferenceException
UnityEngine.Component.SendMessageUpwards (System.String methodName) (at C:/buildslave/unity/build/artifacts/generated/common/runtime/UnityEngineComponentBindings.gen.cs:204)
Game.OnTriggerStay2D (UnityEngine.Collider2D other) (at Assets/Scripts/Game.cs:36)
LertmindДата: Понедельник, 12 Сентября 2016, 21:08 | Сообщение # 26
заслуженный участник
Сейчас нет на сайте
ballObject - указанный выше, это GameObject. Ссылки на GameObject получают либо через открытые поля класса, либо через код. Если другой скрипт на том же GameObject, то можно просто вызывать GetComponent<Ball>().NewPosBall();. Чтобы не задавать таких совсем элементарных вопросов, гугли статьи "unity скриптинг".
Но самое главное, RTFM: Руководство Unity, API скриптов, Обучающие материалы.


Сообщение отредактировал Lertmind - Понедельник, 12 Сентября 2016, 21:10
ZVENДата: Понедельник, 12 Сентября 2016, 21:17 | Сообщение # 27
почетный гость
Сейчас нет на сайте
Может я чего-то не понимаю, но пишу GetComponent<Ball>().NewPosBall();
И он выдает:
NullReferenceException: Object reference not set to an instance of an object
Game.OnTriggerStay2D (UnityEngine.Collider2D other) (at Assets/Scripts/Game.cs:35)
LertmindДата: Понедельник, 12 Сентября 2016, 21:50 | Сообщение # 28
заслуженный участник
Сейчас нет на сайте
ZVEN, я же написал, что скрипты должны быть на одном и том же GameObject, чтобы так вызывать.
ZVENДата: Понедельник, 12 Сентября 2016, 22:10 | Сообщение # 29
почетный гость
Сейчас нет на сайте
А если они на разных, то что делать?
Какой выход?
LertmindДата: Понедельник, 12 Сентября 2016, 22:17 | Сообщение # 30
заслуженный участник
Сейчас нет на сайте
"Ссылки на GameObject получают либо через открытые поля класса, либо через код.", RTFM: Управление игровыми объектами (GameObjects) с помощью компонентов.
ZVENДата: Среда, 14 Сентября 2016, 10:22 | Сообщение # 31
почетный гость
Сейчас нет на сайте
Ок. Спасибо, позже почитаю и опробую, скорее всего завтра.
Пока смотрю уроки по скриптингу на инглише от Unity, может хоть чему-то научусь.

Добавлено (13 сентября 2016, 16:57)
---------------------------------------------
Проблему решил, в уроках по скриптингу от unity.
Зато возник еще вопрос:
Есть цифра внутри круга, вот только не могу понять как сделать так, чтобы она была постоянно на одном месте, а то при изменении разрешения она съезжает.
Фото прилагаю.

Добавлено (14 сентября 2016, 10:22)
---------------------------------------------
Неужели никто не знает?

LertmindДата: Среда, 14 Сентября 2016, 11:31 | Сообщение # 32
заслуженный участник
Сейчас нет на сайте
Исуси. Если цифра - это UI -> Text, то самый простой способ сделай отдельный Canvas с Render Mode -> World Space, поместить его в нужное место и добавить на него Text.
ZVENДата: Среда, 14 Сентября 2016, 15:00 | Сообщение # 33
почетный гость
Сейчас нет на сайте
Спасибо, сорян что я туплю конкретно.
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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