目录
1.Transform移动
2.Rigidbody移动
//==============================================
1.Transform移动===================================
匀速运动:以固定速度进行移动,速度值需要比较大
复制代码
1
2
3float MotorSave; //当前位置= 数学类.匀速运动(当前位置,目标位置,速度*时间系数) MotorSave = Mathf.MoveTowards(MotorSave, MotorTarget, MotorSpeed * Time.deltaTime);
复制代码
1
2
3Vector2 MotorSave; //当前位置= 二维向量类.匀速运动(当前位置,目标位置,速度*时间系数) MotorSave = Vector2.MoveTowards(MotorSave, MotorTarget, MotorSpeed * Time.deltaTime);
复制代码
1
2
3Vector3 MotorSave; //当前位置= 三维向量类.匀速运动(当前位置,目标位置,速度*时间系数) MotorSave = Vector3.MoveTowards(MotorSave, MotorTarget, MotorSpeed * Time.deltaTime);
差值运动:先快后慢
复制代码
1
2
3float MotorSave; //当前位置= 数学类.差值运动(当前位置,目标位置,速度*时间系数) MotorSave = Mathf.Lerp(MotorSave, MotorTarget, MotorSpeed * Time.deltaTime);
复制代码
1
2
3Vector2 MotorSave; //当前位置= 二维向量类.差值运动(当前位置,目标位置,速度*时间系数) MotorSave = Vector2.Lerp(MotorSave, MotorTarget, MotorSpeed * Time.deltaTime);
复制代码
1
2
3Vector3 MotorSave; //当前位置= 三维向量类.差值运动(当前位置,目标位置,速度*时间系数) MotorSave = Vector3.Lerp(MotorSave, MotorTarget, MotorSpeed * Time.deltaTime);
平滑运动:在运动时间内到达目标位置
复制代码
1
2
3float MotorSave; //当前位置= 数学类.平滑(当前位置,目标位置,返回 每秒速度,运动时间) MotorSave = Mathf.SmoothDamp(MotorSave, MotorTarget, ref MotorVelocity, SpeedTime);
复制代码
1
2
3Vector2 MotorSave; //当前位置= 二维向量类.平滑运动(当前位置,目标位置,返回 每帧速度,运行时间,设置最大速度,时间系数) MotorSave = Vector2.SmoothDamp(MotorSave, MotorTarget, ref MotorVelocity, MotorSpeed, Mathf.Infinity, Time.deltaTime);
复制代码
1
2
3Vector3 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
2gameObject.GetComponent<Rigidbody>().velocity = Vector3.forward * MoveSpeed;
MovePosition()
//让物体移动到新的位置position。//恒速移动
//适用于频繁改变,推荐使用这种,较为平滑
复制代码
1
2rb.MovePosition(transform.position + transform.forward * Time.deltaTime);
AddForce()
复制代码
1
2
3
4
5playerRgd.AddForce(dir*force);//方向与力道 //给刚体增加一个力。//炮弹加速 playerRgd.AddRelativeForce(dir*force); //添加一个力到刚体。相对于本地坐标。
返回目录
最后
以上就是危机灯泡最近收集整理的关于物体移动 u3d学习总结笔记本的全部内容,更多相关物体移动内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复