2014-01-03 6 views
2

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

+2

Что вы пробовали? Если вы не публикуете какой-либо код, мы не можем знать, что вы делаете, и не можете предложить никаких улучшений. –

+0

Опишите, что вы пытали! –

ответ

2

Вы можете использовать плагины iTween. И если вы хотите, чтобы ваша камера двигалась с вашим объектом, т.е. следите за ней плавно. Вы можете использовать сценарий smoothFollow.

+1

Я бы порекомендовал это тоже, у iTween есть много возможностей, чтобы сгладить подвижность, от каудакрита и кривой, которая заставила бы камеру двигаться быстро в начале, а затем замедлялась в конце, программирование могло бы ввести в заблуждение людей, которые еще не использовали iTween, но это действительно стоит, joi, Nick's Answer в значительной степени ответ для этого, обязательно отметьте его. –

+0

спасибо все.I использование Vector3.smoothDamp. – joi

0
public Vector3 target;  //The player 
public float smoothTime= 0.3f; //Smooth Time 
private Vector2 velocity;  //Velocity 
Vector3 firstPosition; 
Vector3 secondPosition; 
Vector3 delta; 
Vector3 ca; 
tk2dCamera UICa; 
bool click=false; 
void Start(){ 
    ca=transform.position; 
    UICa=GameObject.FindGameObjectWithTag("UI").GetComponent<tk2dCamera>(); 
} 
void FixedUpdate() 
{ 
    if(Input.GetMouseButtonDown(0)){ 


     firstPosition=UICa.camera.ScreenToWorldPoint(Input.mousePosition); 
     ca=transform.position; 

    } 
    if(Input.GetMouseButton(0)){ 


     secondPosition=UICa.camera.ScreenToWorldPoint(Input.mousePosition); 
     delta=secondPosition-firstPosition; 
     target=ca+delta; 

    } 
    //Set the position 
    if(delta!=Vector3.zero){ 
     transform.position = new Vector3(Mathf.SmoothDamp(transform.position.x, target.x, ref velocity.x, smoothTime),Mathf.SmoothDamp(transform.position.y, target.y, ref velocity.y, smoothTime),transform.position.z); 
    } 

} 
1

Существует хороший учебник по этой проблеме, то, как правило, описывается в начале of all tutorials на сайте единства. Внутри Survival Shooter Tutorial есть объяснение, как сделать движение камеры в положение назначения гладким во время движения.

Вот код для перемещения камеры. Создайте сценарий, добавьте его в камеру и добавьте GameObject, к которому вы хотите переместиться, в заполнитель сценариев. Он автоматически сохранит компонент Transform, как настройка в скрипте. (В моем случае это игрок учебника по выживанию):

public class CameraFollow : MonoBehaviour 
{ 
    // The position that that camera will be following. 
    public Transform target; 
    // The speed with which the camera will be following.   
    public float smoothing = 5f;   

    // The initial offset from the target. 
    Vector3 offset;      

    void Start() 
    { 
     // Calculate the initial offset. 
     offset = transform.position - target.position; 
    } 

    void FixedUpdate() 
    { 
     // Create a postion the camera is aiming for based on 
     // the offset from the target. 
     Vector3 targetCamPos = target.position + offset; 

     // Smoothly interpolate between the camera's current 
     // position and it's target position. 
     transform.position = Vector3.Lerp (transform.position, 
              targetCamPos, 
              smoothing * Time.deltaTime); 
    } 
} 
Смежные вопросы