查看: 1135|回复: 0
打印 上一主题 下一主题

[其他] 鼠标点击控制人物行走的代码

[复制链接]

2317

主题

54

听众

2万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
20645
精华
62

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-12-31 21:53:47 |只看该作者 |倒序浏览
  1. void Update ()

  2. {

  3. if(Input.GetMouseButtonDown(0))

  4. {

  5. RayControl();

  6. }

  7. if(flagMove)

  8. {

  9. if(Vector3.Distance(transform.position,mousePos)>1)

  10. {

  11. transform.Translate(transform.worldToLocalMatrix* transform.forward * Time.deltaTime*5);

  12. }

  13. else

  14. {

  15. flagMove=false;

  16. }

  17. }

  18. }

  19. void RayControl()

  20. {

  21. Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);

  22. if(Physics.Raycast(ray,out hit,200))

  23. {

  24. GameObject targetPos=GameObject.CreatePrimitive(PrimitiveType.Sphere);

  25. targetPos.transform.localScale=new Vector3(0.5f,0.5f,0.5f);

  26. mousePos=hit.point;

  27. mousePos.y=transform.position.y;

  28. targetPos.transform.position=mousePos;

  29. targetDir=mousePos-transform.position;

  30. Vector3 tempDir=Vector3.Cross(transform.forward,targetDir.normalized);

  31. float dotValue=Vector3.Dot(transform.forward,targetDir.normalized);

  32. float angle=Mathf.Acos(dotValue)*Mathf.Rad2Deg;

  33. if(tempDir.y<0)

  34. {

  35. angle=angle*(-1);

  36. }

  37. print(tempDir.y);

  38. print(“2:”+angle);

  39. transform.RotateAround(transform.position,Vector3.up,angle);

  40. flagMove=true;

  41. }

  42. }
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-5-14 15:04 , Processed in 0.083080 second(s), 33 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部