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; } }
相关文章推荐
- [置顶] unity中点击屏幕2d图片的移动和旋转
- [Unity热更新]tolua# & LuaFramework(二):打包工具
- unity3d的playmaker插件使用教程,三、对象出入触发,声音播放
- Unity3D内存管理——对象池(Object Pool)
- [Unity官方文档翻译]Importing Assets 如何向unity导入资源
- unity 面试题
- 深入理解IOC模式及Unity框架
- Unity3D热更新<三> Me-slua 框架
- (十)Unity5.0新特性------新UI系统实战
- unity源码解析Object
- Unity svn配置
- unity3d的playmaker插件使用教程,二、开关盒子
- 射线检测地表高度和世界坐标和屏幕坐标间的转换
- Unity ZTest 深度测试 & ZWrite 深度写入
- unity3d的playmaker插件使用教程,一、电灯开关
- unity3d中脚本生命周期(MonoBehaviour lifecycle)
- Unity依赖注入使用详解
- 用Unity的Projector制作基地范围效果
- 项目记录32--unity 导出dotween补充
- Unity5.x的GUIText被UI Text所取代--增加头文件UnityEngine.UI