Четверг, 28 Марта 2024, 15:02

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Записи участника » ArhipovEvgeniy [8]
Результаты поиска
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. Задержка выполнения скрипта
был не раз
Сейчас нет на сайте
Да, теперь намного понятней. Спасибо большое biggrin
ArhipovEvgeniyДата: Понедельник, 16 Июля 2012, 22:27 | Сообщение # 3 | Тема: OnMouseEnter и GetMouseButton. Задержка выполнения скрипта
был не раз
Сейчас нет на сайте
Quote (seaman)
А Вам я советую почитать какие-нибудь книги по программированию с нуля

так и делаю.

не знаю, быть может вы неправильно поняли, но я второй скрипт вызываю в первом, а не наоборот. biggrin
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, спасибо за код smile

Добавлено (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("");
}
}

Форум игроделов » Записи участника » ArhipovEvgeniy [8]
  • Страница 1 из 1
  • 1
Поиск:

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