根据鼠标点击位置移动物体
2017-06-07 14:38
447 查看
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class translateByMouse : MonoBehaviour {
public GameObject moveObj;
private List<Vector3> pArr;
private int len;
private float s;
private float dis;
private float speed = 3;
private float speedX;
private float speedY;
private float angle;
private bool flag;
private Vector3 screenV;
// Use this for initialization
void Start () {
pArr = new List<Vector3>();
screenV = Camera.main.WorldToScreenPoint(moveObj.transform.position);
}
void moveCount()
{
Vector3 p = pArr[0];
Vector3 v = moveObj.transform.position;
float dx = p.x - v.x;
float dy = p.y - v.y;
s = Mathf.Sqrt(dx * dx + dy * dy);
angle = Mathf.Atan2(dy, dx);
speedX = speed * Mathf.Cos(angle);
speedY = speed * Mathf.Sin(angle);
dis = 0;
flag = true;
pArr.RemoveAt(0);
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown(0))
{
Vector3 dianV = Input.mousePosition;
dianV.z = screenV.z;
Vector3 wv = Camera.main.ScreenToWorldPoint(dianV);
pArr.Add(wv);
if (!flag)
{
moveCount();
}
}
if (flag)
{
moveObj.transform.Translate(Vector3.right * Time.deltaTime * speedX);
moveObj.transform.Translate(Vector3.up * Time.deltaTime * speedY);
dis += Time.deltaTime * speed;
if (dis > s)
{
if (pArr.Count > 0)
{
moveCount();
}
else
{
flag = false;
}
}
}
}
}
using System.Collections;
using System.Collections.Generic;
public class translateByMouse : MonoBehaviour {
public GameObject moveObj;
private List<Vector3> pArr;
private int len;
private float s;
private float dis;
private float speed = 3;
private float speedX;
private float speedY;
private float angle;
private bool flag;
private Vector3 screenV;
// Use this for initialization
void Start () {
pArr = new List<Vector3>();
screenV = Camera.main.WorldToScreenPoint(moveObj.transform.position);
}
void moveCount()
{
Vector3 p = pArr[0];
Vector3 v = moveObj.transform.position;
float dx = p.x - v.x;
float dy = p.y - v.y;
s = Mathf.Sqrt(dx * dx + dy * dy);
angle = Mathf.Atan2(dy, dx);
speedX = speed * Mathf.Cos(angle);
speedY = speed * Mathf.Sin(angle);
dis = 0;
flag = true;
pArr.RemoveAt(0);
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown(0))
{
Vector3 dianV = Input.mousePosition;
dianV.z = screenV.z;
Vector3 wv = Camera.main.ScreenToWorldPoint(dianV);
pArr.Add(wv);
if (!flag)
{
moveCount();
}
}
if (flag)
{
moveObj.transform.Translate(Vector3.right * Time.deltaTime * speedX);
moveObj.transform.Translate(Vector3.up * Time.deltaTime * speedY);
dis += Time.deltaTime * speed;
if (dis > s)
{
if (pArr.Count > 0)
{
moveCount();
}
else
{
flag = false;
}
}
}
}
}
相关文章推荐
- Unity移动物体到鼠标点击位置
- Unity3d--物体移动到鼠标点击位置
- u3d 鼠标点击位置,物体移动过去。 U3d mouse clicks position, objects move past.
- Unity中物体如何移动到鼠标点击位置
- 我的Unity(1)一点一滴 鼠标点击任意位置,物体移动到该位置。
- unity3D 实现NGUI物体朝鼠标点击位置移动
- Unity3d--根据鼠标点击的位置改变物体朝向
- 场景中创建N(两个以上)个物体,鼠标可以选中任何物体,当鼠标选中为非地面时,选中的物体变为红色,之前选中的物体恢复为之前的颜色,鼠标点击到地面时,让之前选中的那个物体移动的当前点击的位置
- Unity3D小白学习日记(01):如何把物体移动到鼠标点击处
- 【Unity 3D学习】鼠标点击控制人物移动到目标位置
- 物体朝着鼠标点击的地方移动
- wo 想做一个根据鼠标效果,平行的边选择,加线,根据鼠标移动分布位置,
- Unity 物体跟随鼠标点击移动,判断物体是否在移动
- 鼠标点击物体互换位置
- XNA实践鼠标篇--根据点击坐标移动图片(四)
- vc鼠标点击窗体任意位置移动窗体代码
- (Javascript经典案例) -- 捕获鼠标点击位置并将元素移动到该位置
- Unity中UGUI中获取鼠标点击位置以及UI物体的屏幕坐标
- ASP中应用ONMOUSEOVER鼠标点击或者移动到表格格子上时光标位置显示窗体
- Unity获取鼠标点击位置,物体朝鼠标点击处移动