Unity中SmoothDamp 平滑阻尼--相机跟随角色移动的示例

1 篇文章 0 订阅

Unity中使用Vector3.SmoothDamp(平滑阻尼)方法进行跟随移动,可以使跟随看起来很平滑,而不显得突兀,最典型的示例就是相机平滑跟随角色移动。

static function SmoothDamp (current : Vector3target : Vector3ref currentVelocity : Vector3smoothTime : float, maxSpeed : float = Mathf.InfinitydeltaTime : float = Time.deltaTime) : Vector3

各参数含义:

1.current 当前物体位置

2.target 目标物体位置

3.ref currentVelocity 当前速度,这个值由你每次调用这个函数时被修改(注:ref 关键字指参数按引用传递, 按引用传递的效果是,对所调用方法中参数进行的任何更改都反映在调用方法中。

4.smoothTime 到达目标的时间,较小的值将快速到达目标

5.maxSpeed 所允许的最大速度,默认无穷大

6.deltaTime 自上次调用这个函数的时间,默认为Time.deltaTime


相机跟随角色移动的示例代码:

public class FllowTarget : MonoBehaviour {

    public Transform charactor;//目标点的参考点
    private float smoothTime = 0.01f;//移动所需的时间,值越小越快移动到目标处
    private Vector3 currentVelocity=Vector3.zero;//当前速度,这个值每次调用SmoothDamp这个函数时被修改
    private Camera mainCamera;//挂载的相机
    
	
	void Awake () {
        	mainCamera = Camera.main;//初始化
	}
	void Start(){
		charactor=GameObject.Find("Player").GetComponent<Transform>();//查找到对象名为“Player”的物体获取其上的Transform组件
	void Update () {
        	//SmoothDamp方法的调用:在smoothTime时间内从当前点以当前速度移动到目标点
       	 	transform.position=Vector3.SmoothDamp(transform.position, charactor.position + new Vector3(0, 1, -10),ref currentVelocity, smoothTime);
	}
}

上述示例的目标点为 charactor.position + new Vector3(0, 1, -10),即角色的后上方而不是角色位置处;charactor是public类型的,可以从Unity界面将角色物体直接拖拽指定,也可以在脚本中获取。


  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值