Unity3D 物体移动到点击位置
2014-10-15 17:06
501 查看
using UnityEngine;
using System.Collections;
public class MoveToClick : MonoBehaviour
{
public GameObject play;
public Vector3 temPos;
public bool isMoving;
public Quaternion rotation;
// Use this for initialization
void Start()
{
play = GameObject.Find("Hero");
print(play);
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100))
{
print(hit.collider.name);
if (hit.collider.gameObject.name == "Plane")
{
Debug.Log(hit.point);
temPos = new Vector3(hit.point.x, play.transform.position.y, hit.point.z);
if (Vector3.Distance(play.transform.position, temPos) > 0.1)
{
isMoving = true;
}
}
}
}
if (Vector3.Distance(play.transform.position, temPos) <= 0.1)
{
isMoving = false;
}
if (isMoving)
{
turn(temPos);
this.GetComponent<CharacterController>().SimpleMove((temPos - play.transform.position).normalized * 5f);
}
}
void turn(Vector3 look)
{
rotation = Quaternion.LookRotation(temPos - play.transform.position, Vector3.up);
play.transform.rotation = Quaternion.Slerp(play.transform.rotation, rotation, Time.deltaTime * 6.0f);
}
}
using System.Collections;
public class MoveToClick : MonoBehaviour
{
public GameObject play;
public Vector3 temPos;
public bool isMoving;
public Quaternion rotation;
// Use this for initialization
void Start()
{
play = GameObject.Find("Hero");
print(play);
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100))
{
print(hit.collider.name);
if (hit.collider.gameObject.name == "Plane")
{
Debug.Log(hit.point);
temPos = new Vector3(hit.point.x, play.transform.position.y, hit.point.z);
if (Vector3.Distance(play.transform.position, temPos) > 0.1)
{
isMoving = true;
}
}
}
}
if (Vector3.Distance(play.transform.position, temPos) <= 0.1)
{
isMoving = false;
}
if (isMoving)
{
turn(temPos);
this.GetComponent<CharacterController>().SimpleMove((temPos - play.transform.position).normalized * 5f);
}
}
void turn(Vector3 look)
{
rotation = Quaternion.LookRotation(temPos - play.transform.position, Vector3.up);
play.transform.rotation = Quaternion.Slerp(play.transform.rotation, rotation, Time.deltaTime * 6.0f);
}
}
相关文章推荐
- unity3d 让物体移动到点击位置
- unity3D 实现NGUI物体朝鼠标点击位置移动
- Unity3D之实现点击地形使物体移动到指定位置
- Unity3d--物体移动到鼠标点击位置
- Unity3D之点击地形使物体移动到指定位置
- u3d 鼠标点击位置,物体移动过去。 U3d mouse clicks position, objects move past.
- 场景中创建N(两个以上)个物体,鼠标可以选中任何物体,当鼠标选中为非地面时,选中的物体变为红色,之前选中的物体恢复为之前的颜色,鼠标点击到地面时,让之前选中的那个物体移动的当前点击的位置
- 在Unity3D中实现点击地面物体移动到指定地点
- 根据鼠标点击位置移动物体
- Unity3D让物体从规定时间内移动到某一位置
- Unity3D【脚本】点击物体后屏幕放大 - (射线、坐标的转换、摄像机的移动和改变属性)
- Unity3d--根据鼠标点击的位置改变物体朝向
- Unity中物体如何移动到鼠标点击位置
- 我的Unity(1)一点一滴 鼠标点击任意位置,物体移动到该位置。
- Unity移动物体到鼠标点击位置
- 【Unity3D基础】让物体动起来①--UGUI鼠标点击移动
- Unity3D让物体从规定时间内移动到某一位置
- unity3d实现3D物体上的点击事件
- swift 有一排按钮,点击按钮时,被点击的按钮如何向中间的位置移动
- vc鼠标点击窗体任意位置移动窗体代码