我是靠谱客的博主 危机灯泡,最近开发中收集的这篇文章主要介绍物体移动 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);
//添加一个力到刚体。相对于本地坐标。

返回目录

 

最后

以上就是危机灯泡为你收集整理的物体移动 u3d学习总结笔记本的全部内容,希望文章能够帮你解决物体移动 u3d学习总结笔记本所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部