загрузка текстур скриптом
|
|
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 |
заслуженный участник
Сейчас нет на сайте
| Была похожая тема
|
|
| |