我希望我的敌人回到起始位置。他跟着我,直到我离开他的范围,然后他就停止了。 此外,我希望我的骨骼停止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);
}
}
答案 0 :(得分:0)
在尝试“编码”之前,请根据您的程序设计考虑一下。您已经设计并实现了一种行为,即“如果机器人的位置在玩家位置的X单位内,则转动机器人并将其移向玩家。”
你想要做的事情可以用同样的方式来考虑(这应该导致类似的代码)..“否则,如果机器人的位置不在玩家位置的X单位内,则转动机器人并移动它朝[原点]。“注意,这意味着您需要定义机器人的[origin]。重点是,无论您是向玩家移动还是向某个任意固定点移动,代码都没有区别。将一个变换移向另一个变换的代码是相同的。
对于“徘徊”,它基本上是相同的思维过程:如果僵尸程序在[原点]的X单位内并且不跟随玩家,则选择随机方向并按此方式移动。 (更好的是,选择一个随机方向并移动一段时间,这样你的机器人不仅会在原点周围抖动)。