使对象始终从A移动到B,然后再移动回来
本文关键字:移动 然后 回来 对象 | 更新日期: 2023-09-27 18:28:48
大家好,感谢您阅读本文。
我在Unity中创建了一个2D小游戏,我对Unity还是个新手。我花了很长时间努力搜索和查看一个公会/教程,了解如何让我的"怪物"从a->B移动,当他到达B时,再移动回来。他需要一直这样做。
怪物有Box Collider
、Rigidbody
和"Destroyer" script
,所以如果你碰到他,你就会死。
我真的很想得到一些关于如何创造怪物运动的帮助。
非常感谢。
这很简单,基本上你想要的是一个巡逻功能,可以这样使用:
- 游戏对象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