我要我的敌人回到起点位置。他跟着我直到我离开他的范围然后他就停了下来。我还想让我的骨骼停下来5秒,然后回到起点,你有什么想法吗?我从来没有做过任何涉及时间的事情,除了停止它。
下面是我为敌人编写的脚本:
这也是骨骼上的检查员的截图:enemy
下面是我为敌人编写的脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class chase : MonoBehaviour
{
public Transform player;
private Animator anim;
public float LookRadius = 15f;
public Transform enemyStartPos;
// Use this for initialization
void Start()
{
anim = GetComponent<Animator>();
this.enemyStartPos.position = this.transform.position;
}
// Update is called once per frame
void Update()
{
if (!PauseMenu.GameIsPaused)
{
if (Vector3.Distance(player.position, this.transform.position) < 15)
{
Vector3 direction = player.position - this.transform.position;
direction.y = 0;
this.transform.rotation = Quaternion.Slerp(this.transform.rotation, Quaternion.LookRotation(direction), 0.1f);
anim.SetBool("isIdle", false);
if (direction.magnitude > 3)
{
this.transform.Translate(0, 0, 0.05f);
anim.SetBool("isWalking", true);
anim.SetBool("isAttacking", false);
}
else
{
anim.SetBool("isAttacking", true);
anim.SetBool("isWalking", false);
}
}
else
{
if (Vector3.Distance(this.enemyStartPos.position, this.transform.position) >1)
{
Vector3 direction = this.enemyStartPos.position - this.transform.position;
direction.y = 0;
this.transform.rotation = Quaternion.Slerp(this.transform.rotation, Quaternion.LookRotation(direction), 0.1f);
anim.SetBool("isIdle", false);
if (direction.magnitude > 1)
{
this.transform.Translate(0, 0, 0.05f);
anim.SetBool("isWalking", true);
anim.SetBool("isAttacking", false);
}
}
else
anim.SetBool("isIdle", true);
anim.SetBool("isAttacking", false);
anim.SetBool("isWalking", false);
}
}
}
private void OnDrawGizmosSelected()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(transform.position, LookRadius);
}
}发布于 2018-03-15 04:30:56
在您尝试对此进行“编码”之前,请考虑一下您的程序设计。您已经设计并实现了这样的行为:“如果机器人的位置与玩家的位置在X个单位之内,则旋转机器人并将其向玩家移动”。
你所描述的下一步要做的事情也可以用同样的方式来考虑(这应该会导致类似的代码)。否则,如果机器人的位置不在玩家位置的X单位内,则旋转机器人并将其移向原点。注意,这意味着你需要定义机器人的原点是什么。重点是,无论你是向玩家移动还是向某个任意的固定点移动,在代码中都没有区别。将一个转换移动到另一个转换的代码是相同的。
对于“漫游”来说,它本质上是相同的思维过程:如果机器人在原点的X个单位内,并且没有跟随玩家,选择一个随机的方向并朝那个方向移动。(更好的是,选择一个随机的方向,并以这种方式移动一段时间,这样你的机器人就不会只是在原点附近抖动)。
https://stackoverflow.com/questions/49286871
复制相似问题