Вторник, 16 Апреля 2024, 14:31

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 4 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Форум игроделов » Записи участника » sinoptis [106]
Результаты поиска
sinoptisДата: Воскресенье, 15 Июля 2012, 22:54 | Сообщение # 61 | Тема: Неработающий код
почетный гость
Сейчас нет на сайте
Данный ниже код прекрасно работал до обновления Unity. Но почему сейчас Unity выдает ошибку: error CS0426: The nested type `Euler' does not exist in the type `UnityEngine.Quaternion'?

Вот код:
Code

//направление на игрока
          Vector3 direction =  transform.position - target.position;
         //запоминаем старые углы
          Vector3 oldRotate = transform.eulerAngles;
         //вычисляем новые углы
          Quaternion newRotate = Quaternion.LookRotation(direction,Vector3.up);
         transform.rotation = Quaternion.Euler(oldRotate.x,newRotate.eulerAngles.y ,newRotate.eulerAngles.z);

Добавлено (14.07.2012, 14:46)
---------------------------------------------
Теперь ещё и анимация перестала работать хотя я ничего не трогал mellow

Добавлено (15.07.2012, 22:54)
---------------------------------------------
Ну что некто не знает? dry

sinoptisДата: Четверг, 12 Июля 2012, 23:29 | Сообщение # 62 | Тема: Проблемка со скриптом.
почетный гость
Сейчас нет на сайте
confused Я в Unity некогда не писал var. А вот с форич заминочка вышла biggrin
sinoptisДата: Четверг, 12 Июля 2012, 22:55 | Сообщение # 63 | Тема: Проблемка со скриптом.
почетный гость
Сейчас нет на сайте
seaman, Какой var в C#????!!
sinoptisДата: Четверг, 12 Июля 2012, 16:30 | Сообщение # 64 | Тема: Проблемка со скриптом.
почетный гость
Сейчас нет на сайте
Js
Code

for( var hit in colliders )

C#
Code

RaycastHit hit;
if(Physics.Raycast(ray,out hit,100)){
foreach(hit in colliders){
//трататата
  }
}

Если я конечно не ошибаюсь


Сообщение отредактировал sinoptis - Четверг, 12 Июля 2012, 16:34
sinoptisДата: Среда, 11 Июля 2012, 18:46 | Сообщение # 65 | Тема: Помощь анимации робота
почетный гость
Сейчас нет на сайте
Помогите сделать анимация бега робота в Blender. Я бы и сам сделал но у него колени назад biggrin . Могу предоставить денежное вознаграждение за помощь( правда не большое) happy . Модель могу кинуть на e-mail.
sinoptisДата: Вторник, 10 Июля 2012, 15:57 | Сообщение # 66 | Тема: Вопрос по List<>
почетный гость
Сейчас нет на сайте
Racot, Обошлось без этого.)))) После обновления юнити себя странно ведет
sinoptisДата: Понедельник, 09 Июля 2012, 11:04 | Сообщение # 67 | Тема: Вопрос по List<>
почетный гость
Сейчас нет на сайте
Racot, Спасибо , конечно , но я так и не понял почему обьекты не добавляются. Хотя можно попробовать использовать Built-in array с заданным количеством юнитов.

Добавлено (09.07.2012, 11:04)
---------------------------------------------
Всё, проблема решилась сама собой.

sinoptisДата: Понедельник, 09 Июля 2012, 00:11 | Сообщение # 68 | Тема: Вопрос по List<>
почетный гость
Сейчас нет на сайте
Вобщем есть два скрипта.( Переписывать полностью не буду так как много, напишу лишь ключевые функции)
И так, первый скрипт весит на обьекте и по клику добавляет клон префаба на сцену и в лист, таким образом
Code

  GameObject inUnit = Instantiate( buildingUnit, new Vector3(spawnPoin.transform.position.x, 2.816964f, spawnPoin.transform.position.y), Quaternion.identity ) as GameObject ;
      unitManager.AddUnit(inUnit);

А во вторм скрипте есть публичная функция по добавлению обьекта(юнита) в лист
Code

public void AddUnit(GameObject unit)
     {
     AllUnits.Add(unit);
     }

И у меня такая конструкция не работает , обьекты создаются но в лист не добавляются , а после выключения Play Mode они появляются в листе( когда они уже не нужны dry ). Помогите разобраться почему не работает.
sinoptisДата: Воскресенье, 08 Июля 2012, 23:53 | Сообщение # 69 | Тема: Постройка зданий в RTS
почетный гость
Сейчас нет на сайте
seaman, Спасибо за разьяснение.
sinoptisДата: Воскресенье, 08 Июля 2012, 16:10 | Сообщение # 70 | Тема: Постройка зданий в RTS
почетный гость
Сейчас нет на сайте
seaman, А графы не являются ли той самой картой проходимости, которая предоставляет алгоритму данные для поиска оптимального пути? dry
sinoptisДата: Пятница, 06 Июля 2012, 10:24 | Сообщение # 71 | Тема: Постройка зданий в RTS
почетный гость
Сейчас нет на сайте
seaman, При том что при помощи А* можно опредилить является ли эта область проходимой или нет, ну и соответственно можно строить или нет.
В Ассет сторе видел еще Unity Steer и Path кто использовал для поиска пути, а то А* и в правду мудрёный слишком.
sinoptisДата: Четверг, 05 Июля 2012, 19:43 | Сообщение # 72 | Тема: Постройка зданий в RTS
почетный гость
Сейчас нет на сайте
SarCasm, Да ,но у него есть еще и бесплатная версия на сайте разработчика.
sinoptisДата: Четверг, 05 Июля 2012, 10:24 | Сообщение # 73 | Тема: Постройка зданий в RTS
почетный гость
Сейчас нет на сайте
Здравствуйте, начал использовать в своем проекте A* Pathfinding и у меня возник вопрос как можно опредилить какие ноды находятся в определенном Bound'е и узнать проходимы они или нет? Заранее спасибо.

Добавлено (05.07.2012, 10:24)
---------------------------------------------
Что, неужели никто не использовал эту систему?

sinoptisДата: Понедельник, 02 Июля 2012, 13:44 | Сообщение # 74 | Тема: Выделение рамкой
почетный гость
Сейчас нет на сайте
pixeye, Спасибо happy

Добавлено (01.07.2012, 17:14)
---------------------------------------------
Вот переписал эти скрипты на С# и совместил в одном. Но теперь не выделяются обьекты посмотрите может где я допустил ошибку?

Code


using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class RTSPlayer : MonoBehaviour {
  //==Публичные переменные================
   
  public GameObject target;
  public List<GameObject> selectedUnitsList;
   
  public List<GameObject> AllUnits;
   
   
  //======================================
  public GUIStyle style;

     private Vector2 startPos;
     private Vector2 endPos;

     private Rect rect;
     private bool drawRect;

     private readonly GUIContent cont = new GUIContent();

  // Use this for initialization
  void Start () {
  AllUnits = new List<GameObject>();
  selectedUnitsList = new List<GameObject>();
  AddAllUnit();
  }
   
  // Update is called once per frame
  void Update () {
    
    
//====Выделение и снятие единичной цели==================================================
   if(Input.GetMouseButton(0)){
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    RaycastHit hit;
     
    if(Physics.Raycast(ray, out hit, 100 )&& hit.collider.tag == "Building"){
     target = hit.collider.gameObject;
     Target tr = (Target)target.GetComponent("Target");
     tr.ShowHealthBar();
    }
   }
   if(Input.GetMouseButton(1)){
    if(target !=null){
     Target tr = (Target)target.GetComponent("Target");
     tr.HideHealthBar();
     target = null;
    }
   }
//===============================================================================
     
  }
   
   
  void OnGUI ()
         {
         if (Input.GetMouseButtonDown(0))
         {
             startPos = Input.mousePosition;
             drawRect = true;
         }
         if (Input.GetMouseButtonUp(0)){
             drawRect = false;
    SelectUnitsInArea(startPos, endPos);
   }

         if (drawRect)
         {
             endPos = Input.mousePosition;
             if(startPos==endPos)return;

             rect = new Rect(Mathf.Min(endPos.x, startPos.x),
                             Screen.height - Mathf.Max(endPos.y, startPos.y),
                             Mathf.Max(endPos.x, startPos.x) - Mathf.Min(endPos.x, startPos.x),
                             Mathf.Max(endPos.y, startPos.y) - Mathf.Min(endPos.y, startPos.y)
                             );

             GUI.Box(rect,cont,style);
     
         }
    
         }
   
   
  //поиск и добавление всех юнитов в список
     public void AddAllUnit(){
     //помещаем всех врагов в массив go
     GameObject[] go = GameObject.FindGameObjectsWithTag("Unit");
     //каждый элемент из найденных засовываем в массив потенциальных целей
   if(go != null){
         foreach(GameObject unit in go)
         AddUnit(unit);
   }
  }
   
  //метод по добавлению в массив очередного элемента
  public void AddUnit(GameObject unit)
  {
  AllUnits.Add(unit);
  }
   
   
  void SelectUnitsInArea(Vector3 point1, Vector3 point2) {   
      Debug.Log("SelectUnitsInArea");
    if (point2.x < point1.x) {   
        
     float x1 = point1.x;   
     float x2 = point2.x;   
     point1.x = x2;
  point2.x = x1;
    }   
       
    if (point2.z > point1.z) {   
        
     float z1 = point1.z;   
     float z2 = point2.z;   
     point1.z = z2;
  point2.z = z1;
     
    }   
       
   foreach(GameObject go in AllUnits){   
   Vector3 goPos = go.transform.position;  
   if (goPos.x > point1.x && goPos.x < point2.x && goPos.z < point1.z && goPos.z > point2.z) {   
   selectedUnitsList.Add(go);   
     Debug.Log("Select");
     Solidier sl = (Solidier)go.GetComponent("Solidier");
     sl.SetUnitSelected(true);
     }   
    }  

  }
}




Добавлено (02.07.2012, 13:44)
---------------------------------------------
Извините biggrin , сам понял happy

sinoptisДата: Суббота, 30 Июня 2012, 17:06 | Сообщение # 75 | Тема: Выделение рамкой
почетный гость
Сейчас нет на сайте
pixeye, Я переводил оба эти скрипта на С# полностью, но они не работали , я решил написать всё с нуля и спросил знающих людей как это работает т.к. я плохо разбираюсь в векторных вычислениях. Спасибо за обьяснение, хотя я уже и сам пришел к этому happy

Сообщение отредактировал sinoptis - Суббота, 30 Июня 2012, 17:07
sinoptisДата: Суббота, 30 Июня 2012, 10:14 | Сообщение # 76 | Тема: Выделение рамкой
почетный гость
Сейчас нет на сайте
Помогите разобраться. На официальном форуме нашел исходник , этого самого выделения.
Но все скрипты на Js и я не как не могу понять ( т.к. пишу на C#), как оно реализованно.
Кому не сложно обьясните на С# только ту часть которая отвечает за определение находится обьект в таргете или нет.
UnitSelection.js
Code
  

private var mouseButton1DownPoint : Vector2;
private var mouseButton1UpPoint : Vector2;
private var mouseButton1DownTerrainHitPoint : Vector3;
private var mouseButton2DownPoint : Vector2;
private var mouseButton2UpPoint : Vector2;
private var selectionPointStart : Vector3;
private var selectionPointEnd : Vector3;
private var mouseLeftDrag : boolean = false;
private var terrainLayerMask = 1 << 8;
private var nonTerrainLayerMask = ~terrainLayerMask;
private var raycastLength : float = 200.0;
// semi transparent texture for the selection rectangle
var selectionTexture : Texture;
// range in which a mouse down and mouse up event will be treated as "the same location" on the map.
private var mouseButtonReleaseBlurRange : int = 20;

function OnGUI() {
  if (mouseLeftDrag) {
    
   var width : int = mouseButton1UpPoint.x - mouseButton1DownPoint.x;
   var height : int = (Screen.height - mouseButton1UpPoint.y) - (Screen.height - mouseButton1DownPoint.y);
   var rect : Rect = Rect(mouseButton1DownPoint.x, Screen.height - mouseButton1DownPoint.y, width, height);
   GUI.DrawTexture (rect, selectionTexture, ScaleMode.StretchToFill, true);
  }
}

function Update ()
{
  // Left mouse button
  if (Input.GetButtonDown("Fire1")) {
    Mouse1Down(Input.mousePosition);
  }
   
  if (Input.GetButtonUp("Fire1")) {
    Mouse1Up(Input.mousePosition);
  }
   
  if (Input.GetButton("Fire1")) {
   // Used to determine if there is some mouse drag operation going on.  
   Mouse1DownDrag(Input.mousePosition);
  }
   
  // Right mouse button
  if (Input.GetButtonDown("Fire2")) {
   mouseButton2DownPoint = Input.mousePosition;
  }
   
  if (Input.GetButtonUp("Fire2")) {
   mouseButton2UpPoint = Input.mousePosition;
   // De-selection if right mouse button is pressed at the same point (more or less) where it was clicked down.
   // Use this inRange with a slight offset so if right mb was not released _exactly_ at the button down position, but with a slight offset.
   if (IsInRange(mouseButton2DownPoint, mouseButton2UpPoint)) {
    UnitManager.GetInstance().ClearSelectedUnitsList();
   }
  }
}

function Mouse1DownDrag(screenPosition : Vector2) {
  // Only show the drag selection texture if the mouse has been moved and not if the user made only a single left mouse click
  if (screenPosition != mouseButton1DownPoint) {
   mouseLeftDrag = true;
   // while dragging, update the current mouse pos for the selection rectangle.
   mouseButton1UpPoint = screenPosition;
    
   var hit : RaycastHit;
   ray = Camera.main.ScreenPointToRay (screenPosition);    
   if ( Physics.Raycast (ray, hit, raycastLength, terrainLayerMask) )
   {  
    //print ("Hit Terrain 2 " + hit.point);
    selectionPointEnd = hit.point;
    UnitManager.GetInstance().ClearSelectedUnitsList();
    UnitManager.GetInstance().SelectUnitsInArea(selectionPointStart, selectionPointEnd);
   }  
  }
}

function Mouse1Down(screenPosition : Vector2) {
    
   mouseButton1DownPoint = screenPosition;
    
   var hit : RaycastHit;
   var ray = Camera.main.ScreenPointToRay (mouseButton1DownPoint);  
   //Debug.DrawRay (ray.origin, ray.direction * 100.0, Color.green);  
   if ( Physics.Raycast (ray, hit, raycastLength) ) // terrainLayerMask
   {  
    if (hit.collider.name == "Terrain")
    {
     mouseButton1DownTerrainHitPoint = hit.point;
     selectionPointStart = hit.point;
    }  
    else
    {
     //print ("Mouse Down Hit something: " + hit.collider.name);

     // Ray hit a unit, not the terrain. Deselect all units as the fire 1 up  
     // event will then select that just recently clicked unit!
     UnitManager.GetInstance().ClearSelectedUnitsList();
    }
    //Debug.DrawRay (ray.origin, ray.direction * 100.0, Color.green);   
   }
}

function Mouse1Up(screenPosition : Vector2) {
   
  mouseButton1UpPoint = screenPosition;
  var hit : RaycastHit;
   
  //print("currently selected units: " + UnitManager.GetInstance().GetSelectedUnitsCount());  
  mouseLeftDrag = false;
   
  if (IsInRange(mouseButton1DownPoint, mouseButton1UpPoint)) {
   // user just did a click, no dragging. mouse 1 down and up pos are equal.
   // if units are selected, move them. If not, select that unit.
   if (UnitManager.GetInstance().GetSelectedUnitsCount() == 0) {
    // no units selected, select the one we clicked - if any.
    ray = Camera.main.ScreenPointToRay (mouseButton1DownPoint);
    if ( Physics.Raycast (ray, hit, raycastLength, nonTerrainLayerMask) )
    {  
     // Ray hit something. Try to select that hit target.  
     //print ("Hit something: " + hit.collider.name);
     hit.collider.gameObject.SendMessage("SetSelected");
    }
         
   } else {
    // untis are selected, move them. Unit Manager's unit count is > 0!
    UnitManager.GetInstance().MoveSelectedUnitsToPoint(mouseButton1DownTerrainHitPoint);
   }  
  }  
}

function IsInRange(v1 : Vector2, v2 : Vector2) : boolean {
  var dist = Vector2.Distance(v1, v2);
  print("Right click release button distance: " + dist);
  if (Vector2.Distance(v1, v2) < mouseButtonReleaseBlurRange) {
   return true;
  }
  return false;
}

UnitManager.js
Code


// the one and only instance for the unit manager
private static var instance : UnitManager;
private var allUnitsList = new Array();
private var selectedUnitsList = new Array();
private var debugMode = false;

// accessor that delivers always the one and only instance of the UnitManager
// Use it like this: UnitManager.GetInstance().<function name>
static function GetInstance() : UnitManager {
  if (instance == null) {
   instance =  FindObjectOfType(UnitManager);
  }
  return instance;
}

function GetSelectedUnitsCount() {
  return selectedUnitsList.length;
}

function AddUnit(go : GameObject) {
  allUnitsList.Add(go);
   
  if (debugMode) {
   print("UnitManager: added unit: " + go.name);
  }
}

function AddSelectedUnit(go : GameObject) {
  selectedUnitsList.Push(go);
  go.SendMessage("SetUnitSelected", true);
   
  if (debugMode) {
   print("UnitManager: added selected unit: " + go.name);
  }
}

function ClearSelectedUnitsList() {
  if (debugMode) {
   print("ClearSelectedUnitsList");
  }
   
  for (var go : GameObject in allUnitsList) {
   go.SendMessage("SetUnitSelected", false);
  }
  selectedUnitsList.Clear();
}

function MoveSelectedUnitsToPoint(destinationPoint : Vector3) {
  for (var go : GameObject in selectedUnitsList) {
   if (debugMode) {
    print("MoveSelectedUnits: Moving unit " + go.name);
   }
   go.SendMessage("MoveToPoint", destinationPoint);
  }
}

function SelectUnitsInArea(point1 : Vector3, point2 : Vector3) {
  if (debugMode) {
   print("Select Units in area...");
  }
   
  if (point2.x < point1.x) {
   // swap x positions. Selection rectangle is beeing drawn from right to left
   var x1 = point1.x;
   var x2 = point2.x;
   point1.x = x2;
   point2.x = x1;
  }
   
  if (point2.z > point1.z) {
   // swap z positions. Selection rectangle is beeing drawn from bottom to top
   var z1 = point1.z;
   var z2 = point2.z;
   point1.z = z2;
   point2.z = z1;
  }
   
  for (var go : GameObject in allUnitsList) {
   var goPos : Vector3 = go.transform.position;
   //print("goPos:" + goPos + " 1:" + point1 + " 2:" + point2);
   if (goPos.x > point1.x && goPos.x < point2.x && goPos.z < point1.z && goPos.z > point2.z) {
    selectedUnitsList.Push(go);
   
    if (debugMode)
     print("Unit inside: " + go.name);
      
    go.SendMessage("SetUnitSelected", true);
   }
  }
}  

function Test() {
  print("UnitManager: Test!");
}

function OnApplicationQuit() {
  instance = null;
}
sinoptisДата: Среда, 27 Июня 2012, 13:20 | Сообщение # 77 | Тема: Загрузка пользовательских изображений в Unity3d
почетный гость
Сейчас нет на сайте
pixeye, Спасибо огромное!
sinoptisДата: Среда, 27 Июня 2012, 11:35 | Сообщение # 78 | Тема: Загрузка пользовательских изображений в Unity3d
почетный гость
Сейчас нет на сайте
Подскажите как в Unity дать пользователю возможность загружать в игру свои изображения , т.е. пользователь может выбрать изображение у себя на компьютере и оно будет использоваться в игре в качестве , скажем, текстуры. Заранее спасибо.
sinoptisДата: Четверг, 14 Июня 2012, 23:17 | Сообщение # 79 | Тема: Constructor анимация
почетный гость
Сейчас нет на сайте
iNikit, уже скачал, спасибо
sinoptisДата: Четверг, 14 Июня 2012, 11:46 | Сообщение # 80 | Тема: Constructor анимация
почетный гость
Сейчас нет на сайте
iNikit, у меня нет 3dmax. Прочитай первй пост dry
Форум игроделов » Записи участника » sinoptis [106]
  • Страница 4 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Поиск:

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