input onmousedown.getmousebuttondown 移动平台可以用吗

原创]unity3D学习【功能实现】之一:坐标的转换以及物体的移动
原创]unity3D学习【功能实现】之一:坐标的转换以及物体的移动
unity2d/3d
转载的请注明出处:http://write.blog.csdn.net/postedit/
目标:鼠标点击一个位置,物体(飞机)匀速的移动到指定位置,停止移动
涉及到:一个坐标系统转换,一个函数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 moveS
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&public
Vector2 newP//用来存放鼠标点击后并且转换后的坐标
& 5,& newPos =transform.//一开始赋值,text我是用来查看数据的,跟本文无关
6,&&if(Input.GetMouseButtonDown(0))
&&&&&&&&&&newPos=Camera.main.ScreenToWorldPoint(Input.mousePosition);
//当鼠标左键点击之后,鼠标点击的坐标,进行转换并赋值给newPos
transform.position = Vector2.MoveTowards(transform.position,newPos,moveSpeed);
//物体移动,moveSpeed这个移动的速度可以自己改
//////////////////////////////////////////////以下是全部代码,有些是多余的//////////////////////////////
using UnityE
using System.C
using UnityEngine.UI;
public class feijjj : MonoBehaviour {
&& &floatforceX;
&& &floatforceY;
&& &public floatmoveS
&& &publicVector2 newP
&& &void Start() {
&&&&&&newPos = transform.
&&&&&&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);
我的热门文章
即使是一小步也想与你分享.GetMouseButtonDown 获取鼠标按钮按下
static function GetMouseButtonDown (button : int) : bool
Description描述
Returns true during the frame the user pressed the given mouse button.
在用户按下指定鼠标按键的那一帧返回true。
You need to call this function from the
function, since the state gets reset each frame.
It will not return true until the user has released the mouse button and pressed it again.
button values are 0 for left button, 1 for right button, 2 for the middle button.
你需要在Update方法中调用这个方法,此后每一帧重置状态时,它将不会返回true除非用户释放这个鼠标按钮然后重新按下它。按钮值设定为 0对应左键 , 1对应右键 , 2对应中键。
using UnityE
using System.C
public class example :
void Update() {
if (Input.GetMouseButtonDown(0))
(&Pressed left click.&);
if (Input.GetMouseButtonDown(1))
(&Pressed right click.&);
if (Input.GetMouseButtonDown(2))
(&Pressed middle click.&);
// Detects clicks from the mouse and prints a message
// depending on the click detected.
//检测到鼠标点击就输出信息
//取决于点击的键值
function Update() {
if(Input.GetMouseButtonDown(0))
(&Pressed left click.&);
if(Input.GetMouseButtonDown(1))
(&Pressed right click.&);
if(Input.GetMouseButtonDown(2))
(&Pressed middle click.&);
本脚本参考基于Unity 3.4.1f5英文部分版权属&公司所有,中文部分&
版权所有,未经许可,严禁转载 。unity 3D里面相机追随任务移动及旋转
核心提示:当相机旋转之后此时的cameraVec就发生了改变如果不更新的话就会导致相机的位置当按着鼠标右键移动的时候,相机的位置改变了但是一旦松开鼠标的右键,相机的位置马上就会回去public T //相机追随的...
自己在网上查了好多资料也没有找到一种好的方式来控制相机追人物移动,及用鼠标右键控制人物旋转的例子
所以自己做完之后整理了一下供大家参考,不喜勿碰!!!
1、说先确定摄像机在人物身后的位置,定位到人物的身后cameraVec 就是用来记录人物与摄像机的距离(向量表示的transform.position -target.
表示的是人物位置指向摄像机位置的一个有长度的向量)
2、当按下鼠标右键的时候判断鼠标的当前位置与上一个位置之间的差值,用于表示人物及摄像机的旋转用
就是用一个Vector3 的值来保存上一个鼠标的点击位置和这一帧的位置差(这里也是一个向量)其中dis.x表示的鼠标两次点击的时候再屏幕上的x方向上的位置差,其实这时候的鼠标的位置虽说是一个Vector3 值但是他得Z轴系统自动置为了0,例如如果lastMousePos为v1(0,0,0),当前这一帧的鼠标的位置为v2(1,1,0),
3、算出来鼠标移动的差值之后,就可以将其转化成人物旋转的角度
transform.RotateAround(target.position, target.up, dis.x * Time.deltaTime *angleSpeedY);
将鼠标的上一帧的位置更新,重新计算相机与人之间的差值cameraVec = transform.position -target.好多人都觉得这个值不用在计算了,其实不然,当相机旋转之后此时的cameraVec就发生了改变如果不更新的话就会导致相机的位置当按着鼠标右键移动的时候,相机的位置改变了但是一旦松开鼠标的右键,相机的位置马上就会回去
//相机追随的目标物体
public floatangleSpeedX;
//鼠标x轴的平移移动速度
public floatangleSpeedY;
//鼠标y轴的平移移动速度
private Vector3 cameraV
//目标物体距离相机的距离
private bool selected =
//是否按下鼠标右键
private Vector3lastMouseP
//上一帧下按下鼠标的位置
void Start () {
cameraVec =transform.position -target.
//设置初始位置差(需要先设置好相机的距目标点的位置)
void Update () {
if(Input.GetMouseButtonDown (1)){
//当按下鼠标右键的时候更新鼠标的上一次的位置
lastMousePos= Input.mouseP
if(Input.GetMouseButtonUp (1)) {
if (selected){
//按下鼠标的时候
Vector3dis = Input.mousePosition -lastMouseP
//计算鼠标屏幕上移动额位移
//让摄像机围绕着目标位置旋转一定的角度(角度值和x的位移量成比例)
transform.RotateAround(target.position, target.up, dis.x * Time.deltaTime *angleSpeedY);
transform.RotateAround(target.position, target.right, -dis.y * Time.deltaTime *angleSpeedX);
//将鼠标的上一个位置赋值
lastMousePos= Input.mouseP
//重新计算距离
cameraVec= transform.position - target.
//修改相机的位置
transform.position= target.position + cameraV
//获取鼠标滚轮的偏移量,当鼠标的偏移量为0的时候表示没有旋转大于活小余0 的表示旋转了
float g =Input.GetAxis ( Mouse ScrollWheel );
if (g != 0f){
if(g & 0f) {
//将距离拉近
cameraVec*= 0.99f;
}else if (g & 0f) {
//将距离拉远
cameraVec*= 1.01f;
transform.position= target.position + cameraV
transform.LookAt(target);}

我要回帖

更多关于 getmousebuttondown 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信