Скрипт смены вида камеры [РЕШЕНО]

Программирование на Юнити.

Скрипт смены вида камеры [РЕШЕНО]

Сообщение [bm] 22 окт 2010, 13:57

Выкладываю на общее обозрение скрипт смены вида камеры для 3D Person Shooter и тп. Скрипт зависит от SmoothFollow.cs, которые пришлось переписать с JavaScript.

Синтаксис:
Используется csharp
using UnityEngine;

[AddComponentMenu("Camera-Control/Smooth Follow")]
public class SmoothFollow : MonoBehaviour
{
        public Transform target;
        public float distance = 10.0f;
        public float height = 5.0f;
        public float heightDamping = 2.0f;
        public float rotationDamping = 3.0f;

        void LateUpdate ()
        {
                if (!target)
                        return;
               
                float wantedRotationAngle = target.eulerAngles.y;
                float wantedHeight = target.position.y + height;

                float currentRotationAngle = transform.eulerAngles.y;
                float currentHeight = transform.position.y;

                currentRotationAngle = Mathf.LerpAngle (currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime);

                currentHeight = Mathf.Lerp (currentHeight, wantedHeight, heightDamping * Time.deltaTime);

                Quaternion currentRotation = Quaternion.Euler (0, currentRotationAngle, 0);

                transform.position = target.position;
                transform.position -= currentRotation * Vector3.forward * distance;

                transform.position = new Vector3(transform.position.x, currentHeight, transform.position.z);
                transform.LookAt (target);
        }
}
 


и сам скрипт:

Синтаксис:
Используется csharp
using UnityEngine;
using System;

[AddComponentMenu("Camera-Control/Change Point Of View")]
[RequireComponent(typeof(SmoothFollow))]
public class ChangePointOfView : MonoBehaviour
{
        public int curentPoV;
        public PoV[] points;

        private SmoothFollow cameraScript;

        [Serializable()]
        public class PoV
        {
                public Transform target;
                public float distance;
                public float height;
                public float heightDamping;
                public float rotationDamping;
        }

        void Start ()
        {
                cameraScript = gameObject.GetComponent<SmoothFollow> ();
        }

        void Update ()
        {
                if (points == null)
                        return;

                if (Input.GetKeyDown (KeyCode.C)) {
                        Debug.Log ("Change View");
                        curentPoV++;
                        curentPoV = (int)Mathf.Repeat (curentPoV, points.Length);
                        PoV pov = points[curentPoV];
                        cameraScript.target = pov.target;
                        cameraScript.distance = pov.distance;
                        cameraScript.height = pov.height;
                        cameraScript.heightDamping = pov.heightDamping;
                        cameraScript.rotationDamping = pov.rotationDamping;
                }
        }

        void OnGUI()
        {
                GUI.Label(new Rect(0,0, 200, 20), "C - change camer"); 
        }
}
 


Как им пользоваться:
1) вешаем скрипт на камеру;
2) создаем точки расположения камеры при помощи пустых объектов;
3) заполняем параметр points в инспекторе:

Изображение

пример:
HTML код для вашего блога :
Код: Выделить всё
<script language='javascript' type="text/javascript"> document.write("<iframe marginheight='0' src='http://unity3d.ru/distribution/player.php?url=http://eteh.su/monstro/CameraExample/WebPlayer/WebPlayer.unity3d&w=800&h=500&t=false&preview=1' height='"+(500+30)+"' width='800' frameborder='0' scrolling='no'></iframe>"); </script>
Mafia Rush: universal iOS game _https://goo.gl/CKq4D Android _https://goo.gl/slFLXx
Shooter Ball: Android _https://goo.gl/21QyPw
skype: bmindfield
Аватара пользователя
[bm]
UNIверсал
 
Сообщения: 426
Зарегистрирован: 11 май 2010, 22:33
Откуда: Россия, Ижевск

Re: Скрипт смены вида камеры [РЕШЕНО]

Сообщение Neodrop 22 окт 2010, 22:50

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

Re: Скрипт смены вида камеры [РЕШЕНО]

Сообщение [bm] 23 окт 2010, 11:13

Чем именно не понравился переход? Если скоростью, то она настраивается при помощи ..Damping
Mafia Rush: universal iOS game _https://goo.gl/CKq4D Android _https://goo.gl/slFLXx
Shooter Ball: Android _https://goo.gl/21QyPw
skype: bmindfield
Аватара пользователя
[bm]
UNIверсал
 
Сообщения: 426
Зарегистрирован: 11 май 2010, 22:33
Откуда: Россия, Ижевск


Вернуться в Скрипты

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

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