我需要一些帮助来为游戏中的敌人创建脚本!我正在制作一个2.5D游戏,玩家追赶露营者并试图杀死他们。我的游戏已经基本完成,但就是搞不定AI!我已经找了几天相关的脚本和帮助,但始终找不到与我的游戏其他部分兼容的解决方案…请帮帮我!
我的地面是一个在x轴上旋转了35度的平面,到目前为止效果还不错(移动角色和放置障碍物)。
目前我正在处理这个脚本;
#pragma strict//攻击按钮var attackButton : Joystick;var anim : Animator;var delay = 5.0;//玩家可以杀死var CanKill = false;//分数var scoreValue : int;var killValue : int;var playerControl : PlayerControl;//AIvar speed : int = 2;var Damp: float = 1.0;var isRun: boolean = false;var Target: Transform;var detectionRange: int = 5;private var character : CharacterController;function Start () { anim = GetComponent("Animator"); var playerControlObject : GameObject = GameObject.FindWithTag ("Player"); character = GetComponent(CharacterController);}function WaitAndDestroy(){ yield WaitForSeconds(delay); Destroy (gameObject);}function Update(){ //玩家可以杀死吗? if (attackButton.tapCount == 1) CanKill = true; else CanKill = false; //AI var FromPlayer = Vector3(Target.position.x - transform.position.x, 0); if(FromPlayer.magnitude <= detectionRange){ isRun = true; } if(FromPlayer.magnitude >= detectionRange) { isRun = false; } if(isRun) { RunAway(); anim.SetBool("Walk", true); } else anim.SetBool("Walk", false);}function OnTriggerEnter (Other : Collider){ if(Other.gameObject.tag == "Player" && CanKill == true) { playerControl.AddScore (scoreValue); playerControl.AddKills (killValue); anim.SetTrigger("Dead"); WaitAndDestroy(); }}function RunAway(){ var moveDirection : Vector3 = transform.position; character.Move(moveDirection.normalized * speed * Time.deltaTime);}
这个脚本部分有效,但不知为何角色会在关卡中间停下来,然后原地跑步…我还希望当我(玩家)追上他并跑到他前面时,他能转身并朝另一个方向跑。(如果代码有点乱,我道歉,但我之前说过我对Javascript是新手)。
回答:
你希望露营者从玩家那里逃跑,对吗?那么你应该这样做
Vector3 moveDirection = transform.position - Player.transform.position
来获取他们应该逃跑的方向。然后使用你已经有的这行代码
character.Move(moveDirection.normalized * speed * Time.deltaTime);