Воскресенье, 22 Декабря 2024, 15:07

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
загрузка текстур скриптом
88mml72Дата: Среда, 19 Марта 2014, 12:26 | Сообщение # 1
частый гость
Сейчас нет на сайте
облазил весь инет но так и не нашел решение проблемы.
а надо так: при нажатии мышки на соответствующий угол террэйна у объекта меняется текстура но при использовании следующего кода:

if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 10.0f)
{

Debug.Log("+10°");
unit.transform.LookAt(clickPosition);
unit.renderer.material.mainTexture = textureLeft;


}

объект окрашивается в белый цвет будто бы для него и не существует выше приведенного кода.
вопрос: есть ли альтернативы решения проблемы?

Добавлено (19.03.2014, 12:26)
---------------------------------------------
да и функция Material.SetTexture тоже не помогает если че

PoqXertДата: Среда, 19 Марта 2014, 14:49 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
А вы гарантируете, что переменная textureLeft не равна null?
Вы смотрели в инспекторе, как поменялся материал после выполнения кода?


Расширения для Unity3D
Блог программиста - PoqXert.ru
88mml72Дата: Среда, 19 Марта 2014, 17:09 | Сообщение # 3
частый гость
Сейчас нет на сайте
не знаю
public Texture2D textureForward, textureBackward, textureLeft, textureRight;
иле
public Texture textureForward, textureBackward, textureLeft, textureRight;

потом цеплял через сандбокс текстуру на объект
PAX83Дата: Среда, 19 Марта 2014, 17:13 | Сообщение # 4
был не раз
Сейчас нет на сайте
Более полный код был бы кстати, есть ли где в коде следующее?
Код
unit.renderer.material.mainTexture = null;


По приведенному в первом сообщении коду видно, что текстура должна назначиться при клике перед юнитом.


Сообщение отредактировал PAX83 - Среда, 19 Марта 2014, 17:15
88mml72Дата: Среда, 19 Марта 2014, 17:23 | Сообщение # 5
частый гость
Сейчас нет на сайте
выкладую фесь файл

using UnityEngine;
using System.Collections;

public class MoveSelectedUnitsOnRightClick : MonoBehaviour
{
public GameObject moveEffectObject;
private UnitManager unitManager;
public float angle = -10.0f;
public Texture2D textureForward, textureBackward, textureLeft, textureRight;

void Start()
{
//синхронизация PlayerUnitManager c объектом
GameObject unitManagerObject = GameObject.FindGameObjectWithTag("PlayerUnitManager");
//???
unitManager = unitManagerObject.GetComponent<UnitManager>();

}

//синхронизация правого клика миши с координатами
void RightClicked(Vector3 clickPosition)
{
bool unitsSelected = false;
//вызов метода
foreach (GameObject unit in unitManager.GetSelectedUnits())
{
unitsSelected = true;
//приказ на движение
unit.SendMessage("MoveOrder", clickPosition);

//работает поворот объекта на цель

// unit.transform.rotation = Quaternion.Slerp(unit.transform.rotation, Quaternion.LookRotation(clickPosition - unit.transform.position),1 * Time.deltaTime);
/*if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 10.0f)
{
Debug.Log("+10°");
unit.transform.LookAt(clickPosition);
}*/

unit.renderer.material.mainTexture = textureLeft;

}
if (unitsSelected)
{
Instantiate(moveEffectObject, clickPosition, moveEffectObject.transform.rotation);
}

}
}
DantorSДата: Четверг, 20 Марта 2014, 08:32 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Была похожая тема
  • Страница 1 из 1
  • 1
Поиск:

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