hmm247 发表于 2014-10-15 17:58

简单的坦克大战AI的脚本

using UnityEngine;
using System.Collections;

public class NPC : MonoBehaviour {
       
        GameObject tank;
        public Transform target;
        public Transform targetRotation1;
        public Transform targetRotation2;
        int cun_time;
       
        void Start()
        {
                cun_time = 0;
                if (target == null && GameObject.Find("NPC"))
                {
                        target = GameObject.Find("NPC").transform;

                }
        }
               
        void Update()
        {       
                tank = GameObject.Find("Player");//实例化
                if (target == null)
                        return;

                Vector3 relativePos1 = target.position - tank.transform.position;
                Quaternion targetRotation1 = Quaternion.LookRotation(relativePos1);//求出与目标之间的角度

                tank.transform.rotation = Quaternion.Slerp(tank.transform.rotation, targetRotation1, Time.deltaTime * 2.0f);//旋转之角度与目标对齐
               
                Vector3 forward = tank.transform.TransformDirection(Vector3.forward);
                Vector3 targetDir =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)
                        {
                                fire ();
                                cun_time=0;
                        }
                }
               
                if((Vector3.Distance(transform.position, this.transform.position) < 50))//发现目标而且在范围之内,开始追击目标
                {                       
                        Vector3 relativePos2 = target.position - tank.transform.position;
                        Quaternion targetRotation2 = Quaternion.LookRotation (relativePos2);
                       
                        tank.transform.rotation = Quaternion.Slerp(tank.transform.rotation, targetRotation2, Time.deltaTime * 1.0f);
                        tank.transform.Translate(Vector3.forward*0.05f);
                }
        }
       
        void fire()
        {
                GameObject obj=GameObject.CreatePrimitive(PrimitiveType.Sphere);
                obj.transform.localScale=new Vector3(0.5f,0.5f,0.5f);
                obj.transform.position=this.transform.position;
                obj.transform.rotation=this.transform.rotation;
                obj.AddComponent<Rigidbody>();
                obj.AddComponent<Bullet>();
                Physics.IgnoreCollision(obj.collider, collider);                               
        }
}

效果好像差的蛮远,拜托各位大大指点指点

sou_su 发表于 2017-3-26 11:18

顶顶多好

sou_su 发表于 2017-3-26 11:28

说的非常好

soloralun 发表于 2017-3-26 11:55

很好哦

597223555 发表于 2017-3-26 11:54

不错不错

597223555 发表于 2017-3-26 11:15

LZ真是人才

naktim 发表于 2017-4-12 08:07

很不错

ljsljl005 发表于 2017-4-12 08:35

顶顶多好

taning 发表于 2017-4-12 08:55

很好哦

fhk20032003 发表于 2017-4-12 08:30

不错不错
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 简单的坦克大战AI的脚本