Unity3D AI人工智能(坦克模型自动寻怪,自动追击)
2014-07-09 10:47
489 查看
功能:
1,坦克自动旋转炮管,自动瞄准
2,在坦克的射程之内自动开炮
3,坦克自动向你追击
unity3d脚本:
view plaincopy to clipboard
01.var Enemy_tank: GameObject; //定义坦克
02.var firepoint: Transform; //定义开火点
03.var bullet: Rigidbody; //定义子弹
04.var bullspeed: int=50; //定义子弹速度
05.var attackRange = 100.0; //定义距离
06.var target : Transform;//定义共计目标
07.//static var value : float ;
08.private var cun_time: int=0;
09.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.
33.
34.Enemy_tank=GameObject.Find("Enemy_barrel"); //实例化
35.if (target == null)
36.return;
37.if (!CanSeeTarget ())
38.return;
39.// Rotate towards target
40.var targetPoint = target.position;
41.var targetRotation = Quaternion.LookRotation (targetPoint - Enemy_tank.transform.position,Vector3.up); //求出与目标之间的角度
42.Enemy_tank.transform.rotation = Quaternion.Slerp(Enemy_tank.transform.rotation, targetRotation, Time.deltaTime * 2.0); //旋转之角度与目标对齐
43.//If we are almost rotated towards target - fire one clip of ammo
44.var forward = Enemy_tank.transform.TransformDirection(Vector3.forward);
45.var targetDir =Enemy_tank.transform.position-target.position; //求出2者之间的距离
46.if((Vector3.Angle(forward, targetDir) <10.0)||((Vector3.Angle(forward, targetDir) >-10.0))) //这边是自动开炮的效果
47.{
48.cun_time++;
49.if(cun_time==260)
50.{
51.var clone : Rigidbody;
52.clone = Instantiate(bullet, firepoint.transform.position, firepoint.transform.rotation);
53.clone.velocity = Enemy_tank.transform.TransformDirection (Vector3.forward*bullspeed);
54.cun_time=0;
55.}
56.}
57.if((Vector3.Distance(transform.position, target.position) < attackRange)) //发现目标而且在范围之内,开始追击目标
58.{
59.var targetPoint1 = target.position;
60.//Calculation the angle with target
61.var targetRotation1 = Quaternion.LookRotation (targetPoint1 - transform.position,Vector3.up);
62.//Rotated Itself then make a line with target
63.transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation1, Time.deltaTime * 1.0);
64.transform.Translate(Vector3.forward*0.05);
65.}
66.}
67.function CanSeeTarget (): System.Boolean //计算是否被发现
68.{
69.if (Vector3.Distance(transform.position, target.position) > attackRange) return false;
70.var hit : RaycastHit; if (Physics.Linecast (transform.position, target.position, hit))
71.return hit.transform == target; return false;
72.}
1,坦克自动旋转炮管,自动瞄准
2,在坦克的射程之内自动开炮
3,坦克自动向你追击
unity3d脚本:
view plaincopy to clipboard
01.var Enemy_tank: GameObject; //定义坦克
02.var firepoint: Transform; //定义开火点
03.var bullet: Rigidbody; //定义子弹
04.var bullspeed: int=50; //定义子弹速度
05.var attackRange = 100.0; //定义距离
06.var target : Transform;//定义共计目标
07.//static var value : float ;
08.private var cun_time: int=0;
09.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.
33.
34.Enemy_tank=GameObject.Find("Enemy_barrel"); //实例化
35.if (target == null)
36.return;
37.if (!CanSeeTarget ())
38.return;
39.// Rotate towards target
40.var targetPoint = target.position;
41.var targetRotation = Quaternion.LookRotation (targetPoint - Enemy_tank.transform.position,Vector3.up); //求出与目标之间的角度
42.Enemy_tank.transform.rotation = Quaternion.Slerp(Enemy_tank.transform.rotation, targetRotation, Time.deltaTime * 2.0); //旋转之角度与目标对齐
43.//If we are almost rotated towards target - fire one clip of ammo
44.var forward = Enemy_tank.transform.TransformDirection(Vector3.forward);
45.var targetDir =Enemy_tank.transform.position-target.position; //求出2者之间的距离
46.if((Vector3.Angle(forward, targetDir) <10.0)||((Vector3.Angle(forward, targetDir) >-10.0))) //这边是自动开炮的效果
47.{
48.cun_time++;
49.if(cun_time==260)
50.{
51.var clone : Rigidbody;
52.clone = Instantiate(bullet, firepoint.transform.position, firepoint.transform.rotation);
53.clone.velocity = Enemy_tank.transform.TransformDirection (Vector3.forward*bullspeed);
54.cun_time=0;
55.}
56.}
57.if((Vector3.Distance(transform.position, target.position) < attackRange)) //发现目标而且在范围之内,开始追击目标
58.{
59.var targetPoint1 = target.position;
60.//Calculation the angle with target
61.var targetRotation1 = Quaternion.LookRotation (targetPoint1 - transform.position,Vector3.up);
62.//Rotated Itself then make a line with target
63.transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation1, Time.deltaTime * 1.0);
64.transform.Translate(Vector3.forward*0.05);
65.}
66.}
67.function CanSeeTarget (): System.Boolean //计算是否被发现
68.{
69.if (Vector3.Distance(transform.position, target.position) > attackRange) return false;
70.var hit : RaycastHit; if (Physics.Linecast (transform.position, target.position, hit))
71.return hit.transform == target; return false;
72.}
相关文章推荐
- Unity3D AI人工智能(坦克模型自动寻怪,自动追击)
- Unity3D AI人工智能(坦克模型自动寻怪,自动追击)
- Unity3D AI人工智能(坦克模型自动寻怪,自动追击)
- Unity3d 坦克AI_自动寻怪,自动追击脚本参考
- Unity3d物体模型(实现旋转缩放平移自动旋转)
- Unity3d物体模型(实现旋转缩放平移自动旋转)
- 人工智能进入日常生活,餐饮业开始流行用AI自动配发优惠券
- AK-47 制造商 Kalashnikov 已成功研发 AI 武器 以 AK-47 闻名世界的俄罗斯军火商 Kalashnikov 近日宣布,其已成功研发全自动武器模块,能够利用人工智能技术识别目
- 【转】AI_自动寻怪,自动追击
- Unity3D——利用协同程序实现游戏中的AI(自动行走和发现目标)
- Unity3D读取模型文件自动生成AnimatorController简单实例
- 谷歌最新AI产品——AutoML Vision,可以自动设计机器学习模型
- Unity3D中的AI架构模型
- Unity3d物体模型(实现旋转缩放平移自动旋转)
- Unity3D AI角色移动和自动跟随
- Unity3D中使用ITween对模型进行自动旋转(RotateBy)
- 【Unity3D】3D模型的自动寻路与Animation连击
- Unity3D中的AI架构模型
- Unity3D研究院之游戏开发中的人工智能AI
- Unity3D 导入贴图、模型等资源文件时自动设置参数