100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Unity 之 代码实现物体跟随鼠标移动

Unity 之 代码实现物体跟随鼠标移动

时间:2021-03-27 11:22:43

相关推荐

Unity 之 代码实现物体跟随鼠标移动

Unity 之 代码实现物体跟随鼠标移动 相关函数 Vector3.Lerp 线性插值

C# => static Vector3 Lerp(Vector3 from, Vector3 to, float t);Vector3.MoveTpwards 移向

C# => static function MoveTowards(current: Vector3, target: Vector3, maxDistanceDelta: float): Vector3;Vector3.SmoothDamp 平滑阻尼

C# =>static Vector3 SmoothDamp(Vector3 current, Vector3 target, Vector3 currentVelocity, float smoothTime, float maxSpeed = Mathf.Infinity, float deltaTime = Time.deltaTime);

着时间的推移,逐渐改变一个向量朝向预期的方向移动

向量由一些像弹簧阻尼器函数平滑,这将用远不会超过,最常见的用途是跟随相机

实现跟随鼠标运动

public class Demo : MonoBehaviour {void Start () {}void Update () {// 此时的摄像机必须转换 2D摄像机 来实现效果(即:摄像机属性Projection --> Orthographic)Vector3 dis = Camera.main.ScreenToWorldPoint(Input.mousePosition); //获取鼠标位置并转换成世界坐标dis.z = this.transform.position.z; //固定z轴this.transform.position = dis; //使物体跟随鼠标移动Debug.Log(dis); //输出变化的位置//使用Lerp方法实现 这里的Time.deltaTime是指移动速度可以自己添加变量方便控制this.transform.position= Vector3.Lerp(this.transform.position,dis,Time.deltaTime);//使用MoveTowards方法实现,这个方法是匀速运动this.transform.position = Vector3.MoveTowards(this.transform.position, dis, Time.deltaTime);//使用SmoothDamp方式实现,给定时间可以获取到速度Vector3 speed = Vector3.zero;this.transform.position = Vector3.SmoothDamp(this.transform.position, dis,ref speed, 0.1f);Debug.Log(speed);}}

根据鼠标点下位置移动物体:

public class Move : MonoBehaviour{void Start(){}void Update(){if (Input.GetMouseButton(0)){//获取需要移动物体的世界转屏幕坐标Vector3 screenPos = Camera.main.WorldToScreenPoint(this.transform.position);//获取鼠标位置Vector3 mousePos = Input.mousePosition;//因为鼠标只有X,Y轴,所以要赋予给鼠标Z轴mousePos.z = screenPos.z;//把鼠标的屏幕坐标转换成世界坐标Vector3 worldPos = Camera.main.ScreenToWorldPoint(mousePos);//控制物体移动transform.position = worldPos;//刚体的方式//transform.GetComponent<Rigidbody>().MovePosition(worldPos);}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。