我使用某些方法但它不起作用。如果玩家处于敌方范围,我该如何制造这个敌人攻击玩家。如果玩家背后有障碍物,敌人将停止攻击玩家
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)”功能,如果玩家进入敌人范围