【转】AI_自动寻怪,自动追击
2013-08-26 11:33
423 查看
1,坦克自动旋转炮管,自动瞄准
2,在坦克的射程之内自动开炮
3,坦克自动向你追击
var Enemy_tank: GameObject; //定义的坦克
var firepoint: Transform; //定义的开火点
var bullet: Rigidbody; //定义的子弹
var bullspeed: int=50; //定义的子弹速度
var attackRange = 100.0; //定义的距离
var target : Transform;//定义的共计目标
//static var value : float ;
private var cun_time: int=0;
function Start () //初始化目标
{
if (target == null && GameObject.FindWithTag("hero")) target = GameObject.FindWithTag("hero").transform;
}
function Update ()
{
//Tank Fire
// cun_time++;
// if(cun_time==260)
// {
// var clone : Rigidbody;
// clone = Instantiate(bullet, firepoint.transform.position, firepoint.transform.rotation);
// clone.velocity = transform.TransformDirection (Vector3.right*bullspeed);
// cun_time=0;
// }
//distance from A and B
//angle from A and B
//var targetDir = transform.position-other.position;
//var right = transform.right;
//var angle = Vector3.Angle(targetDir, right);
//print("angle is ="+angle);//if (angle < 5.0)//transform.Rotate(Vector3.up*0.5);
//var speed = 0.1;
//transform.rotation =Quaternion.Slerp (from.rotation, to.rotation, Time.time * speed);
Enemy_tank=GameObject.Find("Enemy_barrel"); //实例化
if (target == null)
return;
if (!CanSeeTarget ())
return;
// Rotate towards target
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); //旋转之角度与目标对齐
//If we are almost rotated towards target - fire one clip of ammo
var forward = Enemy_tank.transform.TransformDirection(Vector3.forward);
var targetDir =Enemy_tank.transform.position-target.position; //求出2者之间的距离
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;
//Calculation the angle with target
var targetRotation1 = Quaternion.LookRotation (targetPoint1 - transform.position,Vector3.up);
//Rotated Itself then make a line with target
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;
}
2,在坦克的射程之内自动开炮
3,坦克自动向你追击
var Enemy_tank: GameObject; //定义的坦克
var firepoint: Transform; //定义的开火点
var bullet: Rigidbody; //定义的子弹
var bullspeed: int=50; //定义的子弹速度
var attackRange = 100.0; //定义的距离
var target : Transform;//定义的共计目标
//static var value : float ;
private var cun_time: int=0;
function Start () //初始化目标
{
if (target == null && GameObject.FindWithTag("hero")) target = GameObject.FindWithTag("hero").transform;
}
function Update ()
{
//Tank Fire
// cun_time++;
// if(cun_time==260)
// {
// var clone : Rigidbody;
// clone = Instantiate(bullet, firepoint.transform.position, firepoint.transform.rotation);
// clone.velocity = transform.TransformDirection (Vector3.right*bullspeed);
// cun_time=0;
// }
//distance from A and B
//angle from A and B
//var targetDir = transform.position-other.position;
//var right = transform.right;
//var angle = Vector3.Angle(targetDir, right);
//print("angle is ="+angle);//if (angle < 5.0)//transform.Rotate(Vector3.up*0.5);
//var speed = 0.1;
//transform.rotation =Quaternion.Slerp (from.rotation, to.rotation, Time.time * speed);
Enemy_tank=GameObject.Find("Enemy_barrel"); //实例化
if (target == null)
return;
if (!CanSeeTarget ())
return;
// Rotate towards target
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); //旋转之角度与目标对齐
//If we are almost rotated towards target - fire one clip of ammo
var forward = Enemy_tank.transform.TransformDirection(Vector3.forward);
var targetDir =Enemy_tank.transform.position-target.position; //求出2者之间的距离
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;
//Calculation the angle with target
var targetRotation1 = Quaternion.LookRotation (targetPoint1 - transform.position,Vector3.up);
//Rotated Itself then make a line with target
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;
}
相关文章推荐
- Unity3D AI人工智能(坦克模型自动寻怪,自动追击)
- Unity3D AI人工智能(坦克模型自动寻怪,自动追击)
- Unity3d 坦克AI_自动寻怪,自动追击脚本参考
- Unity3D AI人工智能(坦克模型自动寻怪,自动追击)
- Unity3D AI人工智能(坦克模型自动寻怪,自动追击)
- 谷歌 AI 自动编程效率超研发工程师,作为工程师的我感到了森森的压力
- 谷歌最新AI产品——AutoML Vision,可以自动设计机器学习模型
- 英伟达为全自动驾驶汽车打造AI计算机,计算力达上代10倍
- 惊呆!谷歌AI自动编程效率超研发工程师,作为AI工程师的我感到了森森的压力
- 国内学者新研究:中医AI登场,自动开出药方
- 实现敌人(怪物)的简单AI(自动巡逻、看到玩家攻击玩家、玩家离开恢复自动巡逻)
- 人工智能进入日常生活,餐饮业开始流行用AI自动配发优惠券
- AI一分钟 | 苹果在自动驾驶领域苦追谷歌,测试车增至27辆;比尔盖茨:AI代替人类工作是件好事
- unity 高级自动寻路(Advanced AI Pro 6.0插件)官网文档翻译(—)
- AI根据视频画面自动配音 ,真假难辨 !(附数据集)
- 程序员的福音,AI可以自动修复bug了!
- AI显微镜面世,20分钟内自动检测出疟疾寄生虫
- CES2018,Intel以AI和自动驾驶反击NVIDIA
- 为什么说特斯拉研发自动驾驶AI芯片应该引起注意?
- 周鸿祎上直播看点很多:美女、音乐、AI、豪宅,可网民最新奇的是他家门口的自动塑封鞋套