我需要一些帮助为我的游戏中的敌人创建一个脚本!我正在做一个2.5D游戏,在那里你追逐露营者,并试图杀死他们。我基本上已经完成了游戏,但我不能让人工智能工作!我已经找了几天的剧本和帮助,但找不到适合我游戏其他部分的.请帮帮我!
对于我的地面,我有一个平面旋转35在x轴,这是相当好的工作到目前为止我(移动字符周围和设置障碍)。
在这一点上,我正在编写这个脚本;
#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的新手)。
发布于 2014-11-19 19:52:13
你想让露营者逃离玩家,对吧?那你应该去做
Vector3 moveDirection = transform.position - Player.transform.position才能找到他们应该去的方向。那就按你已经有的线路做好
character.Move(moveDirection.normalized * speed * Time.deltaTime);发布于 2014-11-19 20:17:53
我会做这两件事。
一开始:
var FromPlayer = transform.position - Player.transform.position;因为你想要减去整个向量,而不仅仅是x坐标,其次是:
function RunAway( FromPlayer :vector3 )
{
character.Move(FromPlayer.normalized * speed * Time.deltaTime);
}如果你已经有矢量FromPlayer,你可以直接使用它来移动字符。
我个人从未使用过团结,但这是你在其他地方所做的。当然,它假定位置可以作为向量被减去。
https://stackoverflow.com/questions/27025523
复制相似问题