您的位置:首页 > 移动开发 > Unity3D

unity使用鼠标移动对象代码2

2016-03-30 23:06 579 查看
public float speed = 20.0f;//速度
public float mass = 2.0f;//质量
public float force = 50.0f;//力

private float curSpeed;//当前速度
private Vector3 targetPoint;//目标位置

void Start()
{
mass = 5.0f;
targetPoint = Vector3.zero;
}
void OnGUI()
{
GUILayout.Label("请点击一处地方,移动主角");
}

void Update()
{
//射线检测鼠标点击移动的位置
RaycastHit hit;
Ray  ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Input.GetMouseButtonDown(0) && Physics.Raycast(ray, out hit, 100.0f))
targetPoint = hit.point;

Vector3 dir = targetPoint - transform.position;
dir.Normalize();

AvoidObstacles(ref dir);

if (Vector3.Distance(targetPoint, transform.position) < 3.0f) return;

curSpeed = speed * Time.deltaTime;
Quaternion  rot = Quaternion.LookRotation(dir);
transform.rotation = Quaternion.Slerp(transform.rotation, rot, 5.0f * Time.deltaTime);
transform.position += transform.forward * curSpeed;
}

private void AvoidObstacles(ref Vector3 dir)
{
RaycastHit hit;

if (Physics.Raycast(transform.position, transform.forward, out hit, minDistToAvoid, layerMask))
{
Vector3 hitNormal = hit.normal;
hitNormal.y = 0.0f;
dir = transform.forward + hitNormal * force;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: