我是靠谱客的博主 危机灯泡,这篇文章主要介绍物体移动 u3d学习总结笔记本,现在分享给大家,希望可以做个参考。

目录

1.Transform移动

2.Rigidbody移动


//==============================================

1.Transform移动===================================

 

匀速运动:以固定速度进行移动,速度值需要比较大

复制代码
1
2
3
float MotorSave; //当前位置= 数学类.匀速运动(当前位置,目标位置,速度*时间系数) MotorSave = Mathf.MoveTowards(MotorSave, MotorTarget, MotorSpeed * Time.deltaTime);
复制代码
1
2
3
Vector2 MotorSave; //当前位置= 二维向量类.匀速运动(当前位置,目标位置,速度*时间系数) MotorSave = Vector2.MoveTowards(MotorSave, MotorTarget, MotorSpeed * Time.deltaTime);
复制代码
1
2
3
Vector3 MotorSave; //当前位置= 三维向量类.匀速运动(当前位置,目标位置,速度*时间系数) MotorSave = Vector3.MoveTowards(MotorSave, MotorTarget, MotorSpeed * Time.deltaTime);

差值运动:先快后慢

复制代码
1
2
3
float MotorSave; //当前位置= 数学类.差值运动(当前位置,目标位置,速度*时间系数) MotorSave = Mathf.Lerp(MotorSave, MotorTarget, MotorSpeed * Time.deltaTime);
复制代码
1
2
3
Vector2 MotorSave; //当前位置= 二维向量类.差值运动(当前位置,目标位置,速度*时间系数) MotorSave = Vector2.Lerp(MotorSave, MotorTarget, MotorSpeed * Time.deltaTime);
复制代码
1
2
3
Vector3 MotorSave; //当前位置= 三维向量类.差值运动(当前位置,目标位置,速度*时间系数) MotorSave = Vector3.Lerp(MotorSave, MotorTarget, MotorSpeed * Time.deltaTime);

平滑运动:在运动时间内到达目标位置

复制代码
1
2
3
float MotorSave; //当前位置= 数学类.平滑(当前位置,目标位置,返回 每秒速度,运动时间) MotorSave = Mathf.SmoothDamp(MotorSave, MotorTarget, ref MotorVelocity, SpeedTime);
复制代码
1
2
3
Vector2 MotorSave; //当前位置= 二维向量类.平滑运动(当前位置,目标位置,返回 每帧速度,运行时间,设置最大速度,时间系数) MotorSave = Vector2.SmoothDamp(MotorSave, MotorTarget, ref MotorVelocity, MotorSpeed, Mathf.Infinity, Time.deltaTime);
复制代码
1
2
3
Vector3 MotorSave; //当前位置= 三维向量类.平滑运动(当前位置,目标位置,返回 每帧速度,运行时间) MotorSave = Vector3.SmoothDamp(MotorSave, MotorTarget, ref MotorVelocity, MotorSpeed);

 

自轴运动:以自己的轴向进行前进运动


Translate平移:Unity提供的方法,无法放入变量凭空计算,结果会直接作用在物体上

复制代码
1
2
3
4
5
//transform.平移方法(方向.向前*时间系数,坐标系.自身) transform.Translate(Vector3.forward * Time.deltaTime, Space.Self); //transform.平移方法(方向.向前*时间系数,坐标系.世界) transform.Translate(Vector3.forward * Time.deltaTime, Space.World);

 自制方法:

二维:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//===[自轴移动]====== /// <summary> /// 电机运行:自轴移动操控式(相对于自身坐标系的轴移动) /// </summary> /// <param name="Origin">物体位置(transform.position)</param> /// <param name="direction">方向(transform.forward为正前方)</param> /// <param name="Time_deltaTime">时间参数</param> /// <returns>return : 物体位置</returns> public Vector2 Run_ShaftDelta(Vector2 Origin, Vector2 direction, float Time_deltaTime) { return Origin = Origin + direction * MotorSpeed * Time_deltaTime; }

三维:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//===[自轴移动]====== /// <summary> /// 电机运行:自轴移动操控式(相对于自身坐标系的轴移动) /// </summary> /// <param name="Origin">物体位置(transform.position)</param> /// <param name="direction">方向(transform.forward为正前方)</param> /// <param name="Time_deltaTime">时间参数</param> /// <returns>return : 物体位置</returns> public Vector3 Run_ShaftDelta(Vector3 Origin, Vector3 direction, float Time_deltaTime) { return MotorSave = Origin + direction * MotorSpeed * Time_deltaTime; }

 

返回目录

2.Rigidbody移动====================================

velocity()

这种方法只能适用于刚体,因为velocity是刚体特有的属性。//改速度移动

复制代码
1
2
gameObject.GetComponent<Rigidbody>().velocity = Vector3.forward * MoveSpeed;

MovePosition()
//让物体移动到新的位置position。//恒速移动
//适用于频繁改变,推荐使用这种,较为平滑

复制代码
1
2
rb.MovePosition(transform.position + transform.forward * Time.deltaTime);

AddForce()

复制代码
1
2
3
4
5
playerRgd.AddForce(dir*force);//方向与力道 //给刚体增加一个力。//炮弹加速 playerRgd.AddRelativeForce(dir*force); //添加一个力到刚体。相对于本地坐标。

返回目录

 

最后

以上就是危机灯泡最近收集整理的关于物体移动 u3d学习总结笔记本的全部内容,更多相关物体移动内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部