Click n drag object (CODE)

Программирование для iPhone & Android

Click n drag object (CODE)

Сообщение Neodrop 07 мар 2010, 09:18

Взято тут : http://forum.unity3d.com/viewtopic.php?t=18536

Перемещение объектов по экрану пальцем. Как базовый код, это может помочь.

Синтаксис:
Используется javascript
#pragma strict

var object : GameObject = null;

private var oT : Transform = null;
private var selected : boolean = false;


function Awake() {
   if (object) {
      oT = object.transform;
   } else {
      var script : DragObject = GetComponent(DragObject);
      script.enabled = false;
   }
}

function FixedUpdate () {
   if (object) {
      var cam : Camera = Camera.main;
      for (var touch : iPhoneTouch in iPhoneInput.touches) {
         var ray = cam.ScreenPointToRay(touch.position);
         var hit : RaycastHit;

         if (touch.phase == iPhoneTouchPhase.Began) {
            if (Physics.Raycast(ray, hit, 100)) {
               if (hit.collider.gameObject == object) {
                  selected = true;
               }
            }
         } else if (touch.phase == iPhoneTouchPhase.Moved) {
            if (selected == true) {
               var cameraTransform = cam.transform.InverseTransformPoint(0, 0, 0);
               var touchPosition = cam.ScreenToWorldPoint(new Vector3(touch.position.x, touch.position.y, cameraTransform.z));

               oT.position.x = touchPosition.x;
            }
         } else if (touch.phase == iPhoneTouchPhase.Ended) {
            selected = false;
         }
      }
   }
}
 
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Click n drag object (CODE)

Сообщение Neodrop 28 мар 2010, 16:31

Переписал. Ужас, как было плохо.

Синтаксис:
Используется csharp
//Created by Neodrop
//neodrop@unity3d.ru
using UnityEngine;
using System.Collections;

[RequireComponent(typeof(Camera))]
public class DragCamera : MonoBehaviour
{
    public int layerToRay = 9;
    public float orthoDelta = 3f, tapSpeed = .3f;
    Vector3 fixedPos;
    float lastTapTime = 0f, startOrtho;

    LayerMask mask;

    void Start()
    {
        fixedPos = camera.transform.position;
        startOrtho = camera.orthographicSize;
        mask = 1 << layerToRay;
    }

    void Update()
    {
        if (iPhoneInput.touchCount == 1 && iPhoneInput.touches[0].phase == iPhoneTouchPhase.Began)
        {
            if (lastTapTime + tapSpeed > Time.realtimeSinceStartup)
            {
                camera.transform.position = fixedPos;
                camera.camera.orthographicSize = startOrtho;
            }
           
            lastTapTime = Time.realtimeSinceStartup;
        }
    }

    void FixedUpdate()
    {
        if (iPhoneInput.touchCount == 1 && iPhoneInput.touches[0].phase == iPhoneTouchPhase.Moved)
            MoveCamera();
    }
   
    void MoveCamera()
    {
        Ray r = camera.ScreenPointToRay(new Vector3(iPhoneInput.touches[0].position.x, iPhoneInput.touches[0].position.y, 0f));

        if (!Physics.Raycast(r, 100, mask)) return;

                Vector3 delta = -iPhoneInput.touches[0].deltaPosition * .01f * camera.orthographicSize/orthoDelta;
                delta.z = delta.y; delta.y = 0f;
                transform.position += delta;
    }
}

 
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт


Вернуться в iPhone & Android

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


cron