unity 3d 中摄像头跟随人物移动总结


学习unity 也已经有比较成的一段时间了,但还是菜鸟级别啊,一直苦于没有师傅,如果能找到个好的师傅带领我,估计像我这样的石头也已经是很牛的人了吧,哈哈....

好了 不开玩笑了。  在游戏中人物会移动。unity 中的摄像机就相当于我们的眼睛。所以要想看见东西,摄像机是必要的。在就会有问题了。在人物移动的时候人物是越走越远,如果你不控制摄像机,那你的摄像机就会在原地不懂,人物就走远了,随着时间,你就会看不见人物了。如何解决这问题呢。我现在暂时能想到3中方法。

1.就是把摄像机放在人物中,当成人物的子物体,这样就把人物当着父物体,也即是相当于设置相机的参照物吧,这样不管人物移动到那里,它和摄像机保持的距离还是一致的。不会因为人物移动,摄像机就离人物远了。

2.就是导入我们伟大的unity中自带的哪个跟随物体的脚本,  名字是 SmoothFollow。然后设置一下距离啊 高度啊,直到自己满意。

3,就是自己用自己写的脚本控制。 我直接上脚本吧

using UnityEngine;
using System.Collections;

public class FllowTarget : MonoBehaviour {

    public Transform character;   //摄像机要跟随的人物
    public float smoothTime = 0.01f;  //摄像机平滑移动的时间
    private Vector3 cameraVelocity = Vector3.zero;
    private Camera mainCamera;  //主摄像机(有时候会在工程中有多个摄像机,但是只能有一个主摄像机吧)
   
    void  Awake () 
    {  
     mainCamera = Camera.main;
    }

    void  Update()
    {
        transform.position = Vector3.SmoothDamp(transform.position, character.position + new Vector3(0, 0, -5), ref cameraVelocity, smoothTime);
    }
  
}

我们讲这段代码拖动给摄像机,然后记得添加character 。好了  现在你就能看见效果了。

character.position + new Vector3(0, 0, -5)这个就是相当于摄像机的位置,也就是摄像机隔离人物往后5个单位长度。总不可能和人物坐标是一样吧。

主要就是Vector3.SmoothDamp() 这个函数。里面的第一个参数就是当前的位置。  第二个参数就是要接近的位置。  第三个参数就是 当前速度,这个值由你每次调用这个函数时被修改。 第四个参数就是完成这个位移移动所花费的时间。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM