当玩家在障碍物后面时,敌人不追求

时间:2017-11-06 18:38:59

标签: javascript unity3d

我使用某些方法但它不起作用。如果玩家处于敌方范围,我该如何制造这个敌人攻击玩家。如果玩家背后有障碍物,敌人将停止攻击玩家

var playertarget : Transform; //the enemy's target
var bigboss : Transform; //current transform data of this enemy

var rotationSpeed = 3; //speed of turning
//SPEED LEVEL MOVE
var slv1 = 5;
var slv2 = 3;
var slv3 = 1;
var speedrandommove = 1;

function Awake() {
    bigboss = transform; //cache transform data for easy access/preformance
}

function Start() {
     playertarget = GameObject.FindWithTag("Player").transform; //target the player
}

function Update() {
    var distance = parseInt((playertarget.position - bigboss.position).magnitude);

    //RANGE
    if (distance < 5) {
        boss_move_to_player('2');
    } else if (distance < 10) {
        boss_move_to_player('2');
    } else if (distance < 20) {
        boss_move_to_player('3');
    } else {
        boss_move_random();
    }
}

function boss_move_to_player(speedtime) {
    //rotate to look at the player
    if(speedtime == "1") {
        speedtime = slv1;
    } else if(speedtime == "2") {
        speedtime = slv2;
    } else {
        speedtime = slv3;
    }
    bigboss.rotation = Quaternion.Slerp(bigboss.rotation,
    Quaternion.LookRotation(playertarget.position - bigboss.position), rotationSpeed*Time.deltaTime);

    //move towards the player
    bigboss.position += bigboss.forward * speedtime * Time.deltaTime;
}

function boss_move_random() {
    bigboss.Translate(Vector3(0, 0, 2) * speedrandommove * Time.deltaTime);
    var randomint = Random.Range(0,360);
    var fwd = bigboss.TransformDirection(Vector3.forward);
    var hit:RaycastHit;
    Debug.DrawRay(bigboss.position, fwd*3, Color.red);
    if(Physics.Raycast(bigboss.position, fwd, hit, 3)) {
        print(hit.collider.tag);
        if(hit.collider.tag=="Penghalang") {
            bigboss.Rotate(0,randomint,0);
        }
    }
}

我该怎么做?

我使用代码“boss_move_random()”让敌人随机运行,如果玩家不在敌人范围内

我使用“boss_move_to_player(speedtime)”功能,如果玩家进入敌人范围

0 个答案:

没有答案