您好,感谢您阅读本文。
我在Unity中创建了一个小型2D游戏,我对Unity仍然很陌生。 我尝试了很长时间,很难搜索和检查一个公会/教程,关于如何让我的“怪物”从A - >移动; B,当他到达B然后再回来。他需要一直这样做。
怪物有一个Box Collider
,一个Rigidbody
和一个"Destroyer" script
,所以如果你遇到他,你就死了。
我真的很想得到关于如何创造怪物运动的一些帮助。
非常感谢。
答案 0 :(得分:0)
这很简单,基本上你正在寻找的是一个巡逻功能,可以像这样使用:
然后,您需要创建一个名为“Patrol”的脚本,该脚本将处理巡逻点的生成和ID。该脚本将被附加到GameObject 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
}
}
接下来,您需要在脚本中使用Unity的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变量设置为不同的PatrolID变量,角色将按顺序走到它们。
---你必须添加自己的动作代码,如果你需要帮助,请告诉我。只需将gameobjects位置移向targetLocation
即可