【发布时间】:2017-01-18 00:24:37
【问题描述】:
你好互联网的巫师,
我正在制作一个 3D 第一人称角色扮演游戏,您可以在其中攻击位于地图周围的敌人。我当前的脚本运行良好,但是有一个问题:只要敌人专注于玩家,他们就会穿过墙壁。
我已经尝试了一些方法来解决这个问题,但不幸的是没有结果。有谁知道这个问题的解决方案吗?
提前致谢。
地精攻击.cs:
using UnityEngine;
using System.Collections;
public class goblinAttack : MonoBehaviour {
public Transform player;
static Animator anim;
// Use this for initialization
void Start ()
{
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update ()
{
Vector3 direction = player.position - this.transform.position;
float angle = Vector3.Angle(direction,this.transform.forward);
if(Vector3.Distance(player.position, this.transform.position) < 10 && angle < 30)
{
direction.y = 0;
this.transform.rotation = Quaternion.Slerp(this.transform.rotation,
Quaternion.LookRotation(direction), 0.1f);
anim.SetBool("isIdle",false);
if(direction.magnitude > 5)
{
this.transform.Translate(0,0,0.10f);
anim.SetBool("isRunning",true);
anim.SetBool("isAttacking",false);
anim.SetBool("isCrying",true);
}
else
{
anim.SetBool("isAttacking",true);
anim.SetBool("isRunning",false);
anim.SetBool("isCrying",false);
}
}
else
{
anim.SetBool("isIdle", true);
anim.SetBool("isRunning", false);
anim.SetBool("isAttacking", false);
anim.SetBool("isCrying",false);
}
}
}
NPC 设置:
【问题讨论】:
-
您的墙壁对象上是否有网格碰撞器?
-
你需要进行一些寻路来找到通往玩家的合法路径。否则,地精会尝试直接冲向玩家,这意味着要么被拦住,要么跑过途中可能很容易绕过的障碍物。
-
是的,我愿意。但它仍然穿过墙壁。
标签: c# unity3d artificial-intelligence move clip