Drag Camera (КОД)

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

Drag Camera (КОД)

Сообщение Neodrop 07 янв 2010, 10:21

Еще один падорочек начинающим мобилкокодерам.

Класс DragCamera :

Класс написан для тех приложений, где камера смотрит сверху-вниз на какое-то игровое поле. По движению пальца, камера перемещается. Примерно как скролл карт. При двойном тапе, возвращается в исходное положение. Поле под камерой должно иметь коллайдер - используются лучи.

(c#) DragCamera.cs
Код: Выделить всё
//Created by Neodrop
//neodrop@unity3d.ru

using UnityEngine;

[RequireComponent(typeof(Camera))]
public class DragCamera : MonoBehaviour
{
    public float speed = .5f, tapSpeed = .3f;
    Vector3 fixedPos;
    float lastTapTime = 0f;

    void Start()
    {
        fixedPos = camera.transform.position;
    }

    void Update()
    {
        if (iPhoneInput.touchCount == 1 && iPhoneInput.touches[0].phase == iPhoneTouchPhase.Began)
        {
            if (lastTapTime + tapSpeed > Time.realtimeSinceStartup) camera.transform.position = fixedPos;
            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));

        RaycastHit hit0;

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

        Vector3 delta = iPhoneInput.touches[0].deltaPosition - new Vector2(hit0.point.x, hit0.point.y);

        delta.z = delta.y; delta.y = 0f;

        camera.transform.position += delta * Time.deltaTime * speed * -1;
    }
}

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

Re: Drag Camera (КОД)

Сообщение d3gator 11 фев 2010, 22:57

А есть ли такой скриптец чтоб тапнуть пальцем на экране и персонаж пошел бы в место тапа?
skype : oleg_fomenko
d3gator
UNIт
 
Сообщения: 119
Зарегистрирован: 20 май 2009, 21:19

Re: Drag Camera (КОД)

Сообщение Neodrop 12 фев 2010, 04:56

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

Re: Drag Camera (КОД)

Сообщение EnterTheWork 31 мар 2010, 18:51

Уважаемый "d3gator", такая реализация управления камерой уже есть в приложении для iPhone под названием "Penelope" там есть режим управления в игре "Tap to Move"!
EnterTheWork
UNец
 
Сообщения: 29
Зарегистрирован: 13 июл 2009, 02:26
  • ICQ

Re: Drag Camera (КОД)

Сообщение d3gator 26 май 2010, 14:45

EnterTheWork писал(а):Уважаемый "d3gator", такая реализация управления камерой уже есть в приложении для iPhone под названием "Penelope" там есть режим управления в игре "Tap to Move"!

хорошо что ты об этом знаешь
skype : oleg_fomenko
d3gator
UNIт
 
Сообщения: 119
Зарегистрирован: 20 май 2009, 21:19

Re: Drag Camera (КОД)

Сообщение Denkacn 18 авг 2011, 11:20

Вот скрипт , что бы тапнуть и перс начал перемещаться в точку тапа:
Синтаксис:
Используется javascript

var Podsvetka : Transform;

var pos : Vector3;

var hit : RaycastHit;

var rot : Vector3;

var ray : Ray;

//////////////////////////

if (Input.GetMouseButtonDown(0))

        {
                ray  = Camera.main.ScreenPointToRay (Input.mousePosition);

                if (Physics.Raycast (ray, hit, 100))

                {

                       

                        if (hit.collider.tag == "map"){

                                pos = hit.point;

                                //Instantiate (Podsvetka, hit.point, transform.rotation); // подсветка в точке клика если надо

                                transform.LookAt(hit.point);

                                if (Vector3.Distance(transform.position, pos) > 3)

                                {

                                        transform.eulerAngles = new Vector3(rot.x, transform.eulerAngles.y, rot.z);

                                        transform.Translate(Vector3.forward * Time.deltaTime * speed);

                                        //GameObject.FindWithTag("Plya").animation.CrossFade("walk", 0.1); //Анимация если нужно

                                }

                                else

                                {

                                       

                                        //GameObject.FindWithTag("Plya").animation.CrossFade("idle", 0.1); //Анимация если нужно

                                }

                               

                        }
                       }
       }



 

Не обращайте внимание на то что используется Input.mousePosition работает и на iOs и на Android (popcorn)
Аватара пользователя
Denkacn
UNIт
 
Сообщения: 83
Зарегистрирован: 11 фев 2011, 01:47
Откуда: Украина. Запорожье. Бабурка =)
  • ICQ


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

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

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