在做一个项目,就是想让车辆在链接数据库的情况下(已有xyz的坐标(东经、北纬、高程))怎么让他紧贴地面运动呢。
如果无法实现的话不要纵坐标(高程)的话可以实现吗
向以下这张图片一样
不是拖拽的物体,是给物体附上坐标后会自己运动的物体,也就是说他的位置是实时赋值的不是需要挪动的
地面与车轮都加上碰撞,车子再加上刚体,这样就能保证车子在移动时车轮紧挨地面了。
using UnityEngine;
using System.Collections;
public class mouseDrag : MonoBehaviour {
//声明从鼠标发出一条射线clickRay
Ray clickRay;
//声明clickRay与游戏物体的碰撞
RaycastHit clickPoint;
//声明clickRay与地面的碰撞
RaycastHit posPoint;
//设置地面层,我的地面层是第8层,所以是8。不会设置层的话请看下边的Tips。
LayerMask mask=1<<8;
void Start () {
}
void Update(){
clickRay=Camera.main.ScreenPointToRay(Input.mousePosition);
}
void OnMouseDown()
{
//如果射线与物体相碰,则调用OnMouseDrag()
if(Physics.Raycast (clickRay,out clickPoint))
{
OnMouseDrag();
}
}
void OnMouseDrag()
{
//取射线与地面相碰的坐标,赋给mouseMove,再把mouseMove的x坐标和z坐标赋给物体,y坐标不变(因为是贴在地面上移动)
Physics.Raycast (clickRay ,out posPoint,Mathf.Infinity,mask.value);
Vector3 mouseMove=posPoint.point;
transform.position = (new Vector3 (mouseMove.x, transform.position.y, mouseMove.z));
return;
}
}
unity3d中利用协程实现鼠标拖动物体贴地移动
https://blog.csdn.net/s1syphe/article/details/79923284
1,车子加刚体加碰撞器,地面、障碍物加碰撞器
(题主所说的物体附上坐标后会自己运动的物体,我对此理解是给个目标位置,车移动到目标位置)
2.1
public Transform target;
// Update is called once per frame
void Update () {
transform.position = Vector3.MoveTowards(transform.position, target.position, Time.deltaTime * 5);
}
2.2
Nav Mesh导航网格,不详细说了,不会用可以百度下