前提・実現したいこと
敵のプログラムを書いています。
プレイヤーが球を投げれるのですが、その球に敵が当たった時にダメージをくらったアニメーションに遷移します。
移動のスクリプトは
Unity のナビゲーションを使用して、スタンダートアセットのAICharacterControlをそのまま使っています。
発生している問題
探索のプログラム
(マップ上に12か所のトランスフォームを設定していて、そのトランスフォームに向かうというプログラムを書いています。
一定時間でそのトランスフォームを変更することで何となく探索しているかのように見せています)
その場所に向かっている途中に球を当ててしまったら、その場所に移動しながらくらった時のアニメーションしてしまいます。
移動はせずくらったアニメーションをして欲しいです。
該当のソースコード
unity C#
ソースコード
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace UnityStandardAssets.Characters.ThirdPerson
{
[RequireComponent(typeof(UnityEngine.AI.NavMeshAgent))]
[RequireComponent(typeof(ThirdPersonCharacter))]
public class EnemyControll : MonoBehaviour { public UnityEngine.AI.NavMeshAgent agent { get; private set; } public ThirdPersonCharacter character { get; private set; } [SerializeField] Animator enemy; private float timeleft; static public int Point = 12; int move; [SerializeField] Transform[] MovePoint = new Transform[Point]; bool MoveChange; public enum EnemyState { Search,//探索 BoxATK,//箱を攻撃 PlayerATK,//プレイヤーを攻撃 Coin,//ダイヤを拾いに行く Death,//ダメージ } public EnemyState type; private Transform target; private void Start() { agent = GetComponentInChildren<UnityEngine.AI.NavMeshAgent>(); character = GetComponent<ThirdPersonCharacter>(); agent.updateRotation = false; agent.updatePosition = true; this.type = EnemyState.Search; enemy.SetBool("Move", false); } private void Update() { Debug.Log(type); if (this.type == EnemyState.Search) { Search(); MoveChange = true; } if (this.type == EnemyState.Death) { enemy.SetTrigger("Death"); target = null; MoveChange = false; } } public void OnCollisionEnter(Collision collision) { if (collision.gameObject.tag == "Attack") { this.type = EnemyState.Death; } } void Search() { timeleft -= Time.deltaTime; if (timeleft <= 0.0) { timeleft = 4.0f; move = Random.Range(0, 12); } enemy.SetBool("Move", true); this.target = MovePoint[move]; if (MoveChange) { if (target != null) agent.SetDestination(target.position); if (agent.remainingDistance > agent.stoppingDistance) character.Move(agent.desiredVelocity, false, false); else character.Move(Vector3.zero, false, false); } } }
}
試したこと
アニメーションが遷移するところで、targetにnull を入れた。
移動のところをMoveChangeというBoolでturuの時に移動をする というのを書いてみました。
補足情報(FW/ツールのバージョンなど)
元も私がプログラマーではなく、つたないところが多いかもしれませんが、
回答よろしくお願いします。
質問などもなるべく早くお答えしたいと思っています。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/03 05:14
2018/12/03 10:09
2018/12/04 02:36
2018/12/04 03:55
2018/12/04 05:59