【发布时间】:2015-01-17 11:36:15
【问题描述】:
我需要一些帮助来为我的游戏中的敌人创建脚本!我正在制作一个 2.5D 游戏,您可以在其中追逐露营者并试图杀死他们。我基本上玩完了游戏,但我无法让 AI 工作!几天来我一直在四处寻找脚本和帮助,但找不到适合我游戏其余部分的任何内容...请帮助!
对于我的地面,我有一个在 x 轴上旋转 35 度的平面,到目前为止,这对我来说效果很好(移动角色并放置障碍物)。
此时我正在编写这个脚本;
#pragma strict
//Attack button
var attackButton : Joystick;
var anim : Animator;
var delay = 5.0;
//Player can kill
var CanKill = false;
//Score
var scoreValue : int;
var killValue : int;
var playerControl : PlayerControl;
//AI
var 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()
{
//Can the player kill?
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 新手)。
【问题讨论】:
标签: android unity3d 2d artificial-intelligence unityscript