一u3d物体运动方式总结

运动本质

u3d中物体运动的本质都是改变物体的position
  1. Transform.Translate
    使物体在当前坐标下移动一段距离,可以设置根据本地坐标系还是世界坐标系
horseGameObject.transform.Translate(Vector3.forward * horseMoveSpeed * Time.deltaTime);
  1. 设置position
    简单粗暴直接修改物体的坐标
  2. 插值运动
    3.1 Vector3.Lerp线性插值
    3.2 Vector3.Slerp球形插值
    3.3 Vector3.MoveTowards
    3.4 Vector3.SmoothDamp 平滑阻尼
    常用于相机跟随移动
    各参数含义:
    1.current 当前物体位置
    2.target 目标物体位置
    3.ref currentVelocity 当前速度,这个值由你每次调用这个函数时被修改(注:ref 关键字指参数按引用传递, 按引用传递的效果是,对所调用方法中参数进行的任何更改都反映在调用方法中。)
    4.smoothTime 到达目标的时间,较小的值将快速到达目标
    5.maxSpeed 所允许的最大速度,默认无穷大
    6.deltaTime 自上次调用这个函数的时间,默认为Time.deltaTime
float smoothTime = 0.1f;
Vector3 velocity = Vector3.zero;
Vector3 newPos = this.camPosList[this.camPosNum];
camRoot.transform.position = Vector3.SmoothDamp(camRoot.transform.position, newPos, ref velocity, smoothTime);
if (Vector3.Distance(newPos, camRoot.transform.position) < 0.1)
{
}
  1. 刚体运动
    4.1 给刚体添加力addforce
    模拟给物理施加一个力后的物理运动,受到各种摩擦力影响
	transform.GetComponent<Rigidbody>().AddForce(newDir * 1f, ForceMode.Impulse);
4.2 设置刚体速度velocity
忽略物理摩擦力,使得物体瞬间达到目标运动速度,受物理碰撞影响
transform.GetComponent<Rigidbody>().velocity = Vector3.up
4.2 刚体的MovePosition方法
		使得物体在受到物理约束的情况下,运动到指定位置
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值