物体移动 u3d学习总结笔记本

目录

1.Transform移动

2.Rigidbody移动


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

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

 

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

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

差值运动:先快后慢

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

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

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

 

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


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

//transform.平移方法(方向.向前*时间系数,坐标系.自身)
transform.Translate(Vector3.forward * Time.deltaTime, Space.Self); 

//transform.平移方法(方向.向前*时间系数,坐标系.世界)
transform.Translate(Vector3.forward * Time.deltaTime, Space.World); 

 自制方法:

二维:

//===[自轴移动]======
/// <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;
    
}

三维:

//===[自轴移动]======
/// <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是刚体特有的属性。//改速度移动

  gameObject.GetComponent<Rigidbody>().velocity = Vector3.forward * MoveSpeed;

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

rb.MovePosition(transform.position + transform.forward * Time.deltaTime);

AddForce()

playerRgd.AddForce(dir*force);//方向与力道
//给刚体增加一个力。//炮弹加速

playerRgd.AddRelativeForce(dir*force);
//添加一个力到刚体。相对于本地坐标。

返回目录

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值