使对象始终从A移动到B,然后再移动回来

本文关键字:移动 然后 回来 对象 | 更新日期: 2023-09-27 18:28:48

大家好,感谢您阅读本文。

我在Unity中创建了一个2D小游戏,我对Unity还是个新手。我花了很长时间努力搜索和查看一个公会/教程,了解如何让我的"怪物"从a->B移动,当他到达B时,再移动回来。他需要一直这样做。

怪物有Box ColliderRigidbody"Destroyer" script,所以如果你碰到他,你就会死。

我真的很想得到一些关于如何创造怪物运动的帮助。

非常感谢。

使对象始终从A移动到B,然后再移动回来

这很简单,基本上你想要的是一个巡逻功能,可以这样使用:

  • 游戏对象A:(立方体,立方体碰撞器,触发器=真,禁用网格,标签=巡逻点)
  • 游戏对象B:(立方体,立方体碰撞器,触发器=真,禁用网格,标签=巡逻点)
  • 游戏对象C:移动的npc

然后,您需要创建一个名为"Patrol"的脚本,该脚本将处理巡逻点的生成和ID。此脚本将同时适用于游戏对象A和B。

using UnityEngine;
using System;
public class Patrol : MonoBehavior 
{
    public int patrolID;
    public GameObject FindNextPoint() 
    {
        GameObject base;
        foreach(GameObject go in GameObject.FindGameObjectsWithTag("PatrolPoint")) 
        {
            if(base == null && go.GetComponent<Patrol>().patrolID != patrolID) 
            {
                base = go;
            }
            if(go.GetComponent<Patrol>().patrolID == (patrolID) + 1) {
                return go;
            }
        }
        // Return the first object found in the scene that isn't this object.
        return base
    }
}

接下来,你需要在你的脚本中使用统一的OnTriggerEnter()函数,该函数适用于玩家(或npc移动)——http://docs.unity3d.com/ScriptReference/Collider.OnTriggerEnter.html

using UnityEngine;
using System.Collections;
public class NpcScript : MonoBehaviour 
{
    private Vector3 targetLocation;
    void OnTriggerEnter(Collider other) 
    {
        if(other.gameObject.tag == "PatrolPoint")
        {
            setWalkTo(other.gameObject);
        }
    }
    void setWalkTo(GameObject go) 
    {
        targetLocation = go.GetComponent<Patrol>().FindNextPoint().transform.position;
    }
}

您可以拥有任意数量的PatrolPoints,只需确保将每个PatrolID变量设置为不同的值,角色就会按顺序走向它们。

---你必须添加你自己的运动代码,如果你需要帮助,请告诉我。只需将游戏对象的位置移向targetLocation