首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >团结-敌人AI;逃离玩家(x和y)

团结-敌人AI;逃离玩家(x和y)
EN

Stack Overflow用户
提问于 2014-11-19 19:40:34
回答 2查看 6.1K关注 0票数 0

我需要一些帮助为我的游戏中的敌人创建一个脚本!我正在做一个2.5D游戏,在那里你追逐露营者,并试图杀死他们。我基本上已经完成了游戏,但我不能让人工智能工作!我已经找了几天的剧本和帮助,但找不到适合我游戏其他部分的.请帮帮我!

对于我的地面,我有一个平面旋转35在x轴,这是相当好的工作到目前为止我(移动字符周围和设置障碍)。

在这一点上,我正在编写这个脚本;

代码语言:javascript
运行
复制
#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的新手)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-19 19:52:13

你想让露营者逃离玩家,对吧?那你应该去做

代码语言:javascript
运行
复制
Vector3 moveDirection = transform.position - Player.transform.position

才能找到他们应该去的方向。那就按你已经有的线路做好

代码语言:javascript
运行
复制
character.Move(moveDirection.normalized * speed * Time.deltaTime);
票数 0
EN

Stack Overflow用户

发布于 2014-11-19 20:17:53

我会做这两件事。

一开始:

代码语言:javascript
运行
复制
var FromPlayer =  transform.position - Player.transform.position;

因为你想要减去整个向量,而不仅仅是x坐标,其次是:

代码语言:javascript
运行
复制
function RunAway( FromPlayer :vector3 )
{
    character.Move(FromPlayer.normalized * speed * Time.deltaTime);
}

如果你已经有矢量FromPlayer,你可以直接使用它来移动字符。

我个人从未使用过团结,但这是你在其他地方所做的。当然,它假定位置可以作为向量被减去。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27025523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档