原创]unity3D学习【功能实现】之一:坐标的转换以及物体的移动

    xiaoxiao2025-10-09  9

    转载的请注明出处:http://write.blog.csdn.net/postedit/52211415 目标:鼠标点击一个位置,物体(飞机)匀速的移动到指定位置,停止移动 涉及到:一个坐标系统转换,一个函数Vector2.MoveTowards 步骤:1,用画图工具顺便画个背景和一个飞机作为资源使用                   2,什么是世界坐标,看上图飞机的位置position,x=-2.34,y=-1.12,这个就是他世界坐标,也就是说现在这副背景图的中心点的世界坐标是(0,0)             3,那么什么是屏幕坐标的,我们把鼠标点一下,点在背景的中心点一下,然后Input.mousePosition,将得到屏幕坐标,他是多少呢,他是(511/2,383/2),所以这个不是我们需要的坐标,我们需要的得到(0,0),所以需要将屏幕坐标转换成世界坐标。Camera.main.ScreenToWorldPoint(Input.mousePosition);这个函数可以直接转换了。       4,那么思路就清晰了,建立两个变量public float moveSpeed;                                                                                                                         public Vector2 newPos;//用来存放鼠标点击后并且转换后的坐标   5,  newPos =transform.position;//一开始赋值,text我是用来查看数据的,跟本文无关 6,    if(Input.GetMouseButtonDown(0))             {                     newPos=Camera.main.ScreenToWorldPoint(Input.mousePosition); //当鼠标左键点击之后,鼠标点击的坐标,进行转换并赋值给newPos             } transform.position = Vector2.MoveTowards(transform.position,newPos,moveSpeed); //物体移动,moveSpeed这个移动的速度可以自己改 结束。 //以下是全部代码,有些是多余的// using UnityEngine; using System.Collections; using UnityEngine.UI; public class feijjj : MonoBehaviour {       Texttext;       floatforceX;       floatforceY;       public floatmoveSpeed;       publicVector2 newPos;       void Start() {             newPos = transform.position;             text=GameObject.Find("Canvas/shubiaozuobiao").GetComponent();             text.text="bbbbbbb";       }             // Update iscalled once per frame       void Update() {             if(Input.GetMouseButtonDown(0))             {                   forceX=Camera.main.ScreenToWorldPoint(Input.mousePosition).x;                   forceY=Camera.main.ScreenToWorldPoint(Input.mousePosition).y;                   text.text="坐标"+"x:"+forceX+" y:"+forceY;                   newPos=Camera.main.ScreenToWorldPoint(Input.mousePosition);             }             //transform.position = Vector2.Lerp(transform.position,newPos,moveSpeed);             transform.position = Vector2.MoveTowards(transform.position,newPos,moveSpeed);       } }
    转载请注明原文地址: https://ju.6miu.com/read-1302965.html
    最新回复(0)