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

[其他] AI_自动寻怪,自动追击

[复制链接]

2722

主题

42

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
38266
精华
111

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

跳转到指定楼层
楼主
发表于 2015-2-28 22:42:32 |只看该作者 |倒序浏览

    1,坦克自动旋转炮管,自动瞄准

  2,在坦克的射程之内自动开炮

  3,坦克自动向你追击
  1. var Enemy_tank: GameObject;                                             //定义的坦克

  2. var firepoint: Transform;                                                         //定义的开火点

  3. var bullet: Rigidbody;                                                              //定义的子弹

  4. var bullspeed: int=50;                                                              //定义的子弹速度

  5. var attackRange = 100.0;                                                          //定义的距离

  6. var target : Transform;//定义的共计目标

  7. //static var value : float ;

  8. private var cun_time: int=0;

  9. function Start ()                                                                                 //初始化目标

  10. {

  11. if (target == null && GameObject.FindWithTag(“hero”))     target = GameObject.FindWithTag(“hero”).transform;

  12. }

  13. function Update ()

  14. {

  15. //Tank Fire

  16. // cun_time++;

  17. // if(cun_time==260)

  18. // {

  19. //     var clone : Rigidbody;

  20. //     clone = Instantiate(bullet, firepoint.transform.position, firepoint.transform.rotation);

  21. //     clone.velocity = transform.TransformDirection (Vector3.right*bullspeed);

  22. //     cun_time=0;

  23. //     }

  24. //distance from A and B

  25. //angle from A and B

  26. //var targetDir = transform.position-other.position;

  27. //var right = transform.right;

  28. //var angle = Vector3.Angle(targetDir, right);

  29. //print(“angle is =”+angle);//if (angle < 5.0)//transform.Rotate(Vector3.up*0.5);

  30. //var speed = 0.1;

  31. //transform.rotation =Quaternion.Slerp (from.rotation, to.rotation, Time.time * speed);

  32. Enemy_tank=GameObject.Find(“Enemy_barrel”);                                                       //实例化

  33. if (target == null)

  34. return;

  35. if (!CanSeeTarget ())

  36. return;

  37. // Rotate towards target

  38. var targetPoint = target.position;

  39. var targetRotation = Quaternion.LookRotation (targetPoint - Enemy_tank.transform.position,Vector3.up);  //求出与目标之间的角度

  40. Enemy_tank.transform.rotation = Quaternion.Slerp(Enemy_tank.transform.rotation, targetRotation, Time.deltaTime * 2.0);

  41. //旋转之角度与目标对齐

  42. //If we are almost rotated towards target - fire one clip of ammo

  43. var forward = Enemy_tank.transform.TransformDirection(Vector3.forward);

  44. var targetDir =Enemy_tank.transform.position-target.position;                          //求出2者之间的距离

  45. if((Vector3.Angle(forward, targetDir) <10.0)||((Vector3.Angle(forward, targetDir) >-10.0)))         //这边是自动开炮的效果

  46. {

  47. cun_time++;

  48. if(cun_time==260)

  49. {

  50. var clone : Rigidbody;

  51. clone = Instantiate(bullet, firepoint.transform.position, firepoint.transform.rotation);

  52. clone.velocity = Enemy_tank.transform.TransformDirection (Vector3.forward*bullspeed);

  53. cun_time=0;

  54. }

  55. }

  56. if((Vector3.Distance(transform.position, target.position) < attackRange))         //发现目标而且在范围之内,开始追击目标

  57. {

  58. var targetPoint1 = target.position;

  59. //Calculation the angle with target

  60. var targetRotation1 = Quaternion.LookRotation (targetPoint1 - transform.position,Vector3.up);

  61. //Rotated Itself   then make a line with target

  62. transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation1, Time.deltaTime * 1.0);

  63. transform.Translate(Vector3.forward*0.05);

  64. }

  65. }

  66. function CanSeeTarget (): System.Boolean                                //计算是否被发现

  67. {

  68. if (Vector3.Distance(transform.position, target.position) > attackRange) return false;

  69. var hit : RaycastHit; if (Physics.Linecast (transform.position, target.position, hit))

  70. return hit.transform == target; return false;

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

使用道具 举报

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

关闭

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

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

GMT+8, 2024-5-1 03:35 , Processed in 0.082570 second(s), 29 queries .

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

© 2008-2019 Narkii Inc.

回顶部