Пятница, 22 Ноября 2024, 18:08

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Ребята нужна помощь в GetComponent!!!
StivДата: Четверг, 22 Октября 2015, 03:52 | Сообщение # 1
заслуженный участник
Сейчас нет на сайте
Всем здравствуйте. У меня возникли трудности и поэтому я решил задать несколько вопросов нашим специалистам - программистам по С#. А вопросы заключаются вот в чем:
1 Вопрос: Есть два куба. Один из них скажем так персонаж, а второй точка куда должен переместится этот персонаж. Так вот как сделать так что бы при клике мыши на 2ой куб, наш персонаж переместился в его позицию. Управление примерно как шахматах получается. Персонаж перемещается именно в заданные точки при клике мыши. Я так предполагаю, необходимо воспользоваться Рейкастом и GetComponent, но честно допереть как пописать эти строки не могу, поэтому и прошу помощи у профи.
2 Вопрос: Тут тема похожа, проблема с позиционирование. см.скриншот. Мне необходимо при клике на клетку производить постройку здания. но вот в чем проблема мне нужно строить на крайних клетках а строиться почему то только в центральной клетке, как в этом скрипте указать позицию боковых клеток. (при чем не точные координаты одной клетки, а так что бы этот скрип можно было наложить и на отсльные клетки, и построение знала именно координаты указанной клетки)?
Заранее благодарен за ответы и критику. Жду ответов, поможете несказанно буду благодарен!!!
1 Вопрос:

2 Вопрос:

Вот скрипт по второму вопросу насчет постройки, пока что вот так выглядит без всяких наворотов -


Сообщение отредактировал Stiv - Четверг, 22 Октября 2015, 04:11
ZoldenДата: Четверг, 22 Октября 2015, 06:38 | Сообщение # 2
частый гость
Сейчас нет на сайте
Ответ на первый вопрос. Выпускаешь луч (Raycast) из камеры, делаешь проверку "если это объект, который мне нужен (можешь искать как по компоненту, так и по имени или по тегу), то беру его позицию и записываю в поле типа Vector3" Например.
Код


if(hit.collider.name == "Box For Me") {
  
   posBox = hit.gameObject.transform.position;
}


После этого поле "posBox" присваиваешь к персонажу.

Вытекает и ответ на второй вопрос. При помощи рейкаста. RaycastHit hit; хранит в себе объект, когда какое либо условие равно истине. В моём примере был объект с именем "Box For Me" и только он. А чтобы взять индивидуальную клетку, можешь попробовать искать по тегу.

P.S. Я бы сделал вот так:
Код

using UnityEngine;

public class SomeClass : MonoBehaviour
{

GameObject player;

void Start()
{
player = GameObject.Find("Player"); //Находит персонажа по имени
}

void Update()
{
    RaycastHit hit;

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

if(Physics.Raycast(ray,out hit, 25))
{
   if(Input.GetMouseButtonDown(0) && hit.collider.tag == "Platform") //Если нажата ЛКМ и Объект с тэгом "Platform", то присваиваем координаты
{
   player.transform.position = hit.gameObject.transform.position;
}

}

}

}



Сообщение отредактировал Zolden - Четверг, 22 Октября 2015, 06:45
StivДата: Четверг, 22 Октября 2015, 09:18 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
Огромное спасибо за оперативность, будем разбирать и вникать в суть кода!!! Еще раз спасибище!!!
ZoldenДата: Четверг, 22 Октября 2015, 10:15 | Сообщение # 4
частый гость
Сейчас нет на сайте
Stiv, Всегда рад помочь wink
  • Страница 1 из 1
  • 1
Поиск:

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