Изометрична камера като в стратегиите
използване на UnityEngine; използване на System.Collections ;
публичен клас ICam: MonoBehavior
обществена плаваща камераSpeed ; //скорост на движение на камерата в равнината public float zoomSpeed ; //скорост на мащабиране на колелото на мишката public float mouseSensitivity ; //чувствителност на мишката при завъртане на камерата
частна трансформация _myTransform; //тук кеширам свойството transform на камерата
// Използвайте това за инициализация void Start ( ) < _myTransform = трансформиране; camSpeed = 150.0f ; скорост на мащабиране = 5000.0f; чувствителност на мишката = 150.0f; >
// Актуализацията се извиква веднъж на кадър void Update ( ) < //преобразуване на скоростта на рамката във времева скорост float speedMod = camSpeed * Време. deltaTime ; float zoomMod = zoomSpeed * Време. deltaTime ; float sensMod = mouseSensitivity * Време. deltaTime ;
//движение на камерата наляво-надясно //когато се контролира от клавишите със стрелки _myTransform. Translate ( Vector3. right * Input. GetAxis ( "Horizontal" ) * speedMod, Space. Self ) ; //при контролиране на мишката (достигане до ръба на екрана) if ( Input. mousePosition . x 0 ) _myTransform. Превод ( Vector3. дясно * - 1 * speedMod, Space. Self ) ; if ( Input. mousePosition . x >= Screen. width ) _myTransform. Превод ( Vector3. right * 1 * speedMod, Space. Self ) ;
//преместване напред и назад _myTransform. Превод ( Vector3. Scale ( _myTransform. TransformDirection ( Vector3. forward ) , new Vector3 ( 1 , 0 , 1 ) ) . normalized * Input. GetAxis ( "Vertical" ) * speedMod, Space. World ) ; if ( Input. mousePosition . y 0 ) _myTransform. Превод ( Vector3. Scale ( _myTransform. TransformDirection ( Vector3. forward ), new Vector3 ( 1, 0, 1 ) ) . normalized * - 1 * speedMod, Space. World ) ; ако (Вход.mousePosition. y >=Екран. височина ) _myTransform. Превод ( Vector3. Scale ( _myTransform. TransformDirection ( Vector3. forward ), new Vector3 ( 1, 0, 1 )) . normalized * 1 * speedMod, Space. World );
//подход-изтриване _myTransform. Translate ( Vector3. forward * Input. GetAxis ( "Mouse ScrollWheel" ) * zoomMod, Space. Self ) ;
//завъртане на камерата if ( Input. GetMouseButton ( 1 ) ) < _myTransform. Rotate ( - Input. GetAxis ( "Mouse Y") * sensMod, 0, 0, Space. Self ) ; _myTransform. Rotate ( 0 , Input. GetAxis ( "Mouse X" ) * sensMod, 0, Space. World ) ; > > >