首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统一乒乓动作速度

统一乒乓动作速度
EN

Stack Overflow用户
提问于 2014-05-30 17:53:03
回答 1查看 4.2K关注 0票数 0

我试图为一场在联合C#的乒乓球比赛做人工智能,但问题是AI似乎以同样的速度移动,因为球在飞。我似乎不知道如何使AI移动一个设定的速度或相同的速度与球员。

代码语言:javascript
复制
using UnityEngine;
using System.Collections;

public class AIController : MonoBehaviour {

Transform Ball;
Transform Ai;

void Update () 
{
    //
    Ball = GameObject.FindGameObjectWithTag ("Ball").transform;
    Ai = GameObject.FindGameObjectWithTag ("Ai").transform;

    if (Ball.position.y > 0) {
        Debug.Log ("Ball Pos " + Ball.position.y);
        Ai.position = new Vector3(Ai.position.x, Ball.position.y, 0);
    }
    else if (Ball.position.y < 0) 
    {
        Debug.Log("Ball Pos " + Ball.position.y);
        Ai.position = new Vector3(Ai.position.x, Ball.position.y, 0);
    }
}
}
EN

回答 1

Stack Overflow用户

发布于 2014-05-30 18:00:15

这并不是说AI在球上以同样的速度移动,而是因为AI和球的位置相同。看看这个:

代码语言:javascript
复制
Ai.position = new Vector3(Ai.position.x, Ball.position.y, 0);

AI.position.y总是球的位置,Ball.position.y。这个人工智能从不输。

你必须以类似的方式更新AI,你很可能是在更新玩家。在AI.y中增加或减少。只需比较球的位置和人工智能的位置,并更新最后一个。

字里行间的东西:

代码语言:javascript
复制
if (Ball.position.y > Ai.position.y)
{
    Ai.position.y += AiSpeed;
}
else
{
    Ai.position.y -= AiSpeed;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23960654

复制
相关文章

相似问题

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