功能:
1,坦克自动旋转炮管,自动瞄准
2,在坦克的射程之内自动开炮
3,坦克自动向你追击
- var Enemy_tank: GameObject;
- var firepoint: Transform;
- var bullet: Rigidbody;
- var bullspeed: int=50;
- var attackRange = 100.0;
- var target : Transform;
-
- private var cun_time: int=0;
- function Start ()
- {
- if (target == null && GameObject.FindWithTag("hero")) target = GameObject.FindWithTag("hero").transform;
- }
- function Update ()
- {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Enemy_tank=GameObject.Find("Enemy_barrel");
- if (target == null)
- return;
- if (!CanSeeTarget ())
- return;
-
- var targetPoint = target.position;
- var targetRotation = Quaternion.LookRotation (targetPoint - Enemy_tank.transform.position,Vector3.up);
- Enemy_tank.transform.rotation = Quaternion.Slerp(Enemy_tank.transform.rotation, targetRotation, Time.deltaTime * 2.0);
-
- var forward = Enemy_tank.transform.TransformDirection(Vector3.forward);
- var targetDir =Enemy_tank.transform.position-target.position;
- if((Vector3.Angle(forward, targetDir) <10.0)||((Vector3.Angle(forward, targetDir) >-10.0)))
- {
- cun_time++;
- if(cun_time==260)
- {
- var clone : Rigidbody;
- clone = Instantiate(bullet, firepoint.transform.position, firepoint.transform.rotation);
- clone.velocity = Enemy_tank.transform.TransformDirection (Vector3.forward*bullspeed);
- cun_time=0;
- }
- }
- if((Vector3.Distance(transform.position, target.position) < attackRange))
- {
- var targetPoint1 = target.position;
-
- var targetRotation1 = Quaternion.LookRotation (targetPoint1 - transform.position,Vector3.up);
-
- transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation1, Time.deltaTime * 1.0);
- transform.Translate(Vector3.forward*0.05);
- }
- }
- function CanSeeTarget (): System.Boolean
- {
- if (Vector3.Distance(transform.position, target.position) > attackRange) return false;
- var hit : RaycastHit; if (Physics.Linecast (transform.position, target.position, hit))
- return hit.transform == target; return false;
- }
本文来自:http://blog.csdn.net/zhulinpptor/article/details/5882905