// 移動処理 private void Move(ActorController actor_controller) { float direction_magnitude = direction_.magnitude; if (animator_) { animator_.SetFloat("movement", direction_magnitude); } if (direction_magnitude == 0.0f) { return; } ActorParameter parameter = actor_controller.GetActorParameter(); nav_mesh_agent_.Move(direction_ * parameter.MoveSpeed * speed_rate_ * Time.deltaTime); // 物理演算の時の回転を切ったのため直接にtransformで回転する direction_ = transform.InverseTransformDirection(direction_); var turn_amount = Mathf.Atan2(direction_.x, direction_.z); transform.Rotate(0f, turn_amount * parameter.TurnSpeed * Time.deltaTime, 0f); }
/// <summary> /// 火に入った処理 /// </summary> /// <param name="actor_controller"></param> public override void Burn(ActorController actor_controller) { }
/// <summary> /// 水に入った処理 /// </summary> /// <param name="actor_controller"></param> public override void Swim(ActorController actor_controller) { }
public void SetTarget(ActorController target) { target_ = target; }
/// <summary> /// 終了処理 /// </summary> /// <param name="actor_controller"></param> public override void Uninit(ActorController actor_controller) { GetComponent <SphereCollider>().enabled = true; GetComponent <NavMeshAgent>().enabled = true; }
public virtual void OnPushExit(ActorController actor_controller) { }
public abstract void Init(ActorController actor_controller);
public abstract void Swim(ActorController actor_controller);
public abstract void Burn(ActorController actor_controller);
public override void Uninit(ActorController actor_controller) { nav_mesh_agent_.isStopped = true; }
public override void Init(ActorController actor_controller) { gameObject.SetActive(false); }
public override void Uninit(ActorController actor_controller) { gameObject.SetActive(true); }