Результаты поиска
| |
ArhipovEvgeniy | Дата: Среда, 18 Июля 2012, 22:05 | Сообщение # 1 | Тема: аргумент OnTriggerEnter |
был не раз
Сейчас нет на сайте
| Здравствуйте. Хочу сделать так, чтобы шарик, попадая на плоскость, перемещался.
Но у меня получается сделать только так: любой предмет, попадая на плоскость, заставляет перемещаться шарик.
Вот код:
using UnityEngine; using System.Collections;
public class SpeedPlane : MonoBehaviour { // Use this for initialization void Start () {
}
// Update is called once per frame void Update () { }
void OnTriggerEnter() //какой аргумент надо поставить? { GameObject Sphere = GameObject.Find("Sphere"); Sphere.transform.Translate(1,1,1); } }
Какой аргумент нужно поставить в OnTriggerEnter, чтобы триггер действовал только на шарик? Я ставил GameObject Sphere, но в методе не получалось найти сферу (GameObject Sphere = GameObject.Find("Sphere") )
|
|
| |
ArhipovEvgeniy | Дата: Вторник, 17 Июля 2012, 04:08 | Сообщение # 2 | Тема: OnMouseEnter и GetMouseButton. Задержка выполнения скрипта |
был не раз
Сейчас нет на сайте
| Да, теперь намного понятней. Спасибо большое
|
|
| |
ArhipovEvgeniy | Дата: Понедельник, 16 Июля 2012, 22:27 | Сообщение # 3 | Тема: OnMouseEnter и GetMouseButton. Задержка выполнения скрипта |
был не раз
Сейчас нет на сайте
| Quote (seaman) А Вам я советую почитать какие-нибудь книги по программированию с нуля так и делаю.
не знаю, быть может вы неправильно поняли, но я второй скрипт вызываю в первом, а не наоборот.
|
|
| |
ArhipovEvgeniy | Дата: Понедельник, 16 Июля 2012, 19:20 | Сообщение # 4 | Тема: OnMouseEnter и GetMouseButton. Задержка выполнения скрипта |
был не раз
Сейчас нет на сайте
| я вас не понял - слишком сложные слова)) я лучше оба скрипта покажу
Первый
using UnityEngine; using System.Collections;
public class SmartChangePosition : MonoBehaviour { private float dx, dz; //переменные разницы векторов private GameObject Empty, State; //объекты с одноимёнными тегами private Vector3 polozhenie; private Vector3 polozhenieEmpty; void Start () { } void Update () { } void OnMouseDown(){ RandomVal tegest = new RandomVal(); if (Input.GetMouseButton(0)){ Debug.Log ("Нажата");//при нажатии на ЛКМ происходят следующие действия --> GameObject Empty = GameObject.FindWithTag(tegest.Tag); //объекту Empty приписывается один из 16 тегов Empty.renderer.enabled = false; //Делаем объект Empty невидимым Empty.collider.enabled = false; //активируем коллайдер объекта Empty dx = transform.position.x - Empty.transform.position.x; //вычисляем разницу в "Х" координатах между активным объектом и объектом Empty dz = transform.position.z - Empty.transform.position.z; //вычисляем разницу в "Z" координатах между активным объектом и объектом Empty if (dx == -1) //Если разница "Х" получается отрицательной --> dx *= -1; //то преобразуем её в положительную, для того, чтобы не путаться. Расстояние только положительное if (dz == -1) //Если разница "Z" получается отрицательной --> dz *= -1; //то преобразуем её в положительную, для того, чтобы не путаться. Расстояние только положительное if ((dx == 1)&(dz == 0)){ //условие для последующих действий с объектом (кнопкой). Разрешаем передвигать только //соседние объекты рядом с объектом Empty gameObject.tag = "Untagged"; gameObject.tag = "State"; //задаём активному объекту (Кнопке) тег State GameObject State = GameObject.FindWithTag("State"); //вгоняем активный объект с тегом State в переменную polozhenie = State.transform.position; //приравниваем переменную к позиции активного объекта transform.position = Empty.transform.position; //Кнопка становится на позицию "Empty" Empty.transform.position = polozhenie; //невидимый объект Empty переходит на позицию Кнопки //Т.Е. они ПОМЕНЯЛИСЬ местами gameObject.tag = "Untagged"; //удаляем тег активного объекта (Кнопки), чтобы мы могли назначить его другой кнопке. //если в сцене возникнет два объекта с одинаковыми тегами, скрипт будет работать некорректно } if ((dz == 1)&(dx == 0)){ //условие для последующих действий с объектом (кнопкой). Разрешаем передвигать только //соседние объекты рядом с объектом Empty gameObject.tag = "Untagged"; gameObject.tag = "State"; //задаём активному объекту (Кнопке) тег State GameObject State = GameObject.FindWithTag("State"); //вгоняем активный объект с тегом State в переменную polozhenie = State.transform.position; //приравниваем переменную к позиции активного объекта transform.position = Empty.transform.position; //Кнопка становится на позицию "Empty" Empty.transform.position = polozhenie; //невидимый объект Empty переходит на позицию Кнопки //Т.Е. они ПОМЕНЯЛИСЬ местами gameObject.tag = "Untagged"; //удаляем тег активного объекта (Кнопки), чтобы мы могли назначить его другой кнопке. //если в сцене возникнет два объекта с одинаковыми тегами, скрипт будет работать некорректно } } } }
Второй:
using UnityEngine; using System.Collections;
public class RandomVal : MonoBehaviour { public string Tag; void Start () { RandomVal tegest = new RandomVal(); tegest.Tag ="E" + Random.Range(1, 16); } // Update is called once per frame void Update () {
} }
сцена выглядит вот так:
|
|
| |
ArhipovEvgeniy | Дата: Понедельник, 16 Июля 2012, 17:41 | Сообщение # 5 | Тема: OnMouseEnter и GetMouseButton. Задержка выполнения скрипта |
был не раз
Сейчас нет на сайте
| pixeye, спасибо за код Добавлено (16.07.2012, 17:41) --------------------------------------------- Есть 2 класса: 1. RandomVal 2. SmartChangePosition Они находятся в двух разных файлах (но думаю это не особо важно). В классе RandomVal есть tegest.Tag (объект.член). В этом классе ему присваиваются значения. Затем в классе SmartChangePosition нужно вызватьtegest.Tag.
У меня это получается так(в классе SmartChangePosition): RandomVal tegest = new RandomVal(); А потом я хочу значение teggest.Tag использовать так: GameObject Empty = GameObject.FindWithTag(tegest.Tag);
Но значениеtegest.Tag я не получаю. В чём дело. Где ошибка? Debug делал - сказали ошибок нет.
|
|
| |
ArhipovEvgeniy | Дата: Воскресенье, 15 Июля 2012, 11:54 | Сообщение # 6 | Тема: OnMouseEnter и GetMouseButton. Задержка выполнения скрипта |
был не раз
Сейчас нет на сайте
| Спасибо pixeye.
зашёл в ступор. Не понимаю как из скрипта обращаться от объекта родитель к объекту потомок (и наоборот). А в частности надо, чтобы потомок задал Тег родителю (скрипт повешен на потомка). Скажите пожалуйста какой командой это сделать? Документацию читал, там несколько команд с родитель-потомок, разобраться в них не получается.Добавлено (15.07.2012, 11:54) --------------------------------------------- Здравствуйте) Вопрос с родителем/потомком отпал
Но возник новый: возможно ли обеспечить плавное перемещение при таком коде:
transform.position = Empty.transform.position; //один объект берёт позицию другого. Tive.deltaTime не помогает, а выразить позицию Empty в виде Vector3 запрещается
|
|
| |
ArhipovEvgeniy | Дата: Суббота, 14 Июля 2012, 06:10 | Сообщение # 7 | Тема: OnMouseEnter и GetMouseButton. Задержка выполнения скрипта |
был не раз
Сейчас нет на сайте
| Спасибо большое! Добавлено (14.07.2012, 06:10) --------------------------------------------- я создаю переменную, в которую входят объекты с одним тегом. К примеру: private GameObject States = FindObjectsWithTag("State")
У меня в наличии 15 объектов с тегом "State". Как обратиться к одному из них?
|
|
| |
ArhipovEvgeniy | Дата: Пятница, 13 Июля 2012, 22:31 | Сообщение # 8 | Тема: OnMouseEnter и GetMouseButton. Задержка выполнения скрипта |
был не раз
Сейчас нет на сайте
| Всем привет. Пишу скрипт на C# для головоломки.
У меня возникла проблема проблема: по наведению на объект, нужно нажать на левую кнопку мыши для того, чтобы переместить его. Но дело в том, что перемещение происходит или через пол минуты или вообще не происходит. Скажите пожалуйста в чём проблема? Скрипт C#: using UnityEngine; using System.Collections;
public class changePosition : MonoBehaviour { //первая строчка public Vector3 position1 = new Vector3(1,0,-1); public Vector3 position2 = new Vector3(2,0,-1); public Vector3 position3 = new Vector3(3,0,-1); public Vector3 position4 = new Vector3(4,0,-1); //вторая строчка public Vector3 position5 = new Vector3(1,0,-2); public Vector3 position6 = new Vector3(2,0,-2); public Vector3 position7 = new Vector3(3,0,-2); public Vector3 position8 = new Vector3(4,0,-2); //третья строчка public Vector3 position9 = new Vector3(1,0,-3); public Vector3 position10 = new Vector3(2,0,-3); public Vector3 position11 = new Vector3(3,0,-3); public Vector3 position12 = new Vector3(4,0,-3); //четвёртая строчка public Vector3 position13 = new Vector3(1,0,-4); public Vector3 position14 = new Vector3(2,0,-4); public Vector3 position15 = new Vector3(3,0,-4); public Vector3 position16 = new Vector3(4,0,-4); void Start(){ transform.position = position1; } void OnMouseEnter(){ renderer.material.color = Color.red; Debug.Log("Pressed left click."); if (Input.GetMouseButton(0)){ transform.position = position2; } } void OnMouseExit(){ renderer.material.color = Color.white; Debug.Log(""); } }
|
|
| |
|