Unity3d 相对于箭头的方向改变

Unity3d 相对于箭头的方向改变,unity3d,unityscript,Unity3d,Unityscript,我是编程新手,想知道如何创建一个类似于游戏中使用的交换系统,意思是链接: 我想知道我的泵是如何识别箭头的位置并开始向她的方向移动的: 我想我应该开始这样做: 运动对象中使用的代码: public float speed; public int direction; void Start () { direction = 1; } void Update () { if (gameObject.transform.position == GameObject.Find("

我是编程新手,想知道如何创建一个类似于游戏中使用的交换系统,意思是链接:

我想知道我的泵是如何识别箭头的位置并开始向她的方向移动的:

我想我应该开始这样做:

运动对象中使用的代码:

public float speed;
public int direction;

void Start () {
    direction = 1;
}


void Update () {

    if (gameObject.transform.position == GameObject.Find("ArrowUp").transform.position){

        direction = 1;
    }

    if (transform.position ==  GameObject.Find("ArrowDown").transform.position)){

        direction = 2;
    }


        if(direction == 1){
          transform.position += new Vector3(0,speed*Time.deltaTime,0);
         }
        if(direction == 2 ){
          transform.position += new Vector3(0,-(speed*Time.deltaTime),0);
         }

    }}
类型:我有一个炸弹目标朝着包含箭头的目标移动,矢量3,它们的位置X和Z是相同的,位置Y是不同的

箭头处于位置(0,10,0)

泵的初始位置(0,0,0)

空心从该方向=1开始,然后对象向上移动

然后,当泵到达位置(0,10,0)时,我希望它能识别出向下箭头中的相同位置,然后泵送mudaçe方向=2,然后向下移动

请注意,箭头以时间间隔旋转90度。那么运动的方向就不同了

问题:我想知道如何识别这个泵在同一位置的物体箭头,然后给出改变其运动的命令

如果“箭头”指向Y轴(绿色箭头),则可以使用transform.up

void Update () {

Vector3 ArrowUpPosition = GameObject.Find("ArrowUp").transform.position
Vector3 ArrowDownPosition = GameObject.Find("ArrowDown").transform.position

if (gameObject.transform.position == ArrowUpPosition ){

    direction = 1;
}

if (transform.position ==  ArrowDownPosition )){

    direction = 2;
}

if(direction == 1){
    transform.position += ArrowUpPosition.transform.up * speed*Time.deltaTime;
}
if(direction == 2 ){
    transform.position += ArrowDownPosition.transform.up * speed*Time.deltaTime;
}
否则,可以使用transform.right或transform.forward(和-transform.forward,-transform.up,-transform.right)

为了表演!!!: 避免在更新中查找GAMEOBJECT.FIND:在开始()中获取引用

避免游戏对象。查找:如果可以,将游戏对象作为字段传递给脚本


避免在更新中使用此指令:如果游戏对象具有触发碰撞器,则在OnTiggerStay中使用此指令。

但是,感谢您,我的对象泵无法在“箭头”的相同位置识别此指令。我唯一想做的是,当我使用时,识别出这个泵与对象“arrow”处于相同的位置:if(transform.position.y>=GameObject.Find(“ArrowDown”).transform.position.y)){direction=2;}:泵识别,,,,use==但是当她不知道时,好的。可能是精度问题表示2个向量3完全匹配。您可以使用:
if((vector1-vector2).sqrMagnitude