Воскресенье, 24 Ноября 2024, 14:21

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Помогите разобраться со скриптом
AlucardДата: Понедельник, 06 Августа 2012, 19:36 | Сообщение # 1
частый гость
Сейчас нет на сайте
Всем привет! Искал пример скрипта в котором реализована возможность перемещения объекта как с зажатой кнопкой мыши, так и по обычному клику. Нашел следующий скрипт и не совсем понял как его использовать, он даже не добавляется к объектам. Помогите разобраться как его использовать.
Code
using UnityEngine;

public class TP_MoveByMouse
{
      private static TP_MoveByMouse singelton = null;

      private Vector3 movePoint = new Vector3(0,0.9f,0);
      private float distance = 0;

      private TP_MoveByMouse()
      {
      }

      public static TP_MoveByMouse GetInstance()
      {
          if(singelton != null)
          {
              return singelton;
          }
          var x = new TP_MoveByMouse();
          return x;
      }

      public void MoveByMouseKlick()
      {
          var player = GameObject.Find("Capsule");
          var playerCurrentPos = player.transform.position;

          if (Input.GetMouseButton(0))
          {
              movePoint = RayCastLineTest(playerCurrentPos);
              GetDistance(player);
              playerCurrentPos = player.transform.position;

              if (!player)
                  return;
          }

          if(distance > 0.1f)
          {
              var speed = 10f;
              var moveSpeed = speed * Time.deltaTime;
              var moveStep = movePoint - player.transform.position;
              moveStep.Normalize();
                
              player.transform.LookAt(movePoint);
              player.transform.position = playerCurrentPos + (moveStep * moveSpeed);
              playerCurrentPos = player.transform.position;

              GetDistance(player);
          }
      }

      private void GetDistance(GameObject player)
      {
          distance = Vector3.Distance(player.transform.position, movePoint);
          Debug.Log(string.Format("Distance: {0}", distance));
      }

      public Vector3 RayCastLineTest(Vector3 playerLoc)
      {
          var hit = new RaycastHit();
          Ray ray = (Camera.main.ScreenPointToRay(Input.mousePosition)  );

            
              Physics.Raycast(ray, out hit);

          Debug.DrawLine(Camera.main.transform.position, hit.point);
            
          return hit.transform.tag == "CanMoveOn" ? new Vector3(hit.point.x,hit.point.y + 0.9f,hit.point.z) : playerLoc;
      }
}


Сообщение отредактировал Alucard - Понедельник, 06 Августа 2012, 19:38
  • Страница 1 из 1
  • 1
Поиск:

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