teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

エラーの部分のソースコードを記載

2016/11/30 04:15

投稿

TKM_waiwai
TKM_waiwai

スコア16

title CHANGED
File without changes
body CHANGED
@@ -2,4 +2,109 @@
2
2
  「ArgumentOutOfRangeException: Argument is out of range.
3
3
  Parameter name: index」というエラーが出てしまいました。
4
4
 
5
- このエラーの改善方法について教えて頂けると嬉しいです。
5
+ このエラーの改善方法について教えて頂けると嬉しいです。
6
+
7
+ ```C#
8
+ using UnityEngine;
9
+ using System.Collections;
10
+ using System.Collections.Generic;
11
+
12
+ public abstract class EnemyBase : GameActor {
13
+
14
+ [SerializeField]
15
+ private PlayerMover player;
16
+ [SerializeField]
17
+ protected float tweenTime = 0.05f;
18
+ [SerializeField]
19
+ public enum EnemyStatas
20
+ {
21
+ Enemy,
22
+ Enemy1,
23
+ }
24
+ public EnemyStatas type;
25
+
26
+
27
+ public enum State
28
+ {
29
+ Moving,
30
+ MoveEnd,
31
+ }
32
+
33
+ public State state = State.Moving;
34
+ public State GetState { get { return state; } }
35
+
36
+ protected ANode node = null;
37
+
38
+ protected Vector3 nextPosition = Vector3.one;
39
+ protected Vector3 currentPosition = Vector3.one;
40
+
41
+
42
+ public abstract void Init();
43
+ public abstract void Proc();
44
+ public abstract void Finish();
45
+ public abstract void Dead();
46
+
47
+
48
+ public void AIMoveDirAStar()
49
+ {
50
+ FieldManager.Instance.GetGroundLayer.SetParam(X, Z, (int)ObjectType.None);
51
+ var path = FieldManager.Instance.FindPath(X, Z, player.X, player.Z);
52
+
53
+ if(path == null) { return; }
54
+
55
+ nextPosition = new Vector3(path[1].x, 1, path[1].z);
56
+ }
57
+
58
+ public List<Point2D> FindPath(int xStart, int zStart, int xGoal, int zGoal)
59
+ {
60
+ var pList = new List<Point2D>();
61
+ var astar = new ANodeManager(FieldManager.Instance.GetGroundLayer, xGoal, zGoal);
62
+ var node = astar.OpenNode(xStart, zStart, 0, null);
63
+ if (node == null)
64
+ {
65
+ Debug.LogError("スタート地点が不正です");
66
+ return null;
67
+ }
68
+
69
+ astar.AddOpenList(node);
70
+
71
+ int cnt = 0;
72
+ while (cnt < 1000)
73
+ {
74
+ astar.RemoveOpenList(node);
75
+ astar.OpenAround(node);
76
+
77
+ node = astar.SerchMinScoreNodeFromOpenList();
78
+ if (node == null)
79
+ {
80
+ Debug.LogError("袋小路なので終了");
81
+ return null;
82
+ }
83
+ if (node.X == xGoal && node.Z == zGoal)
84
+ {
85
+ astar.RemoveOpenList(node);
86
+ node.GetPath(pList);
87
+ pList.Reverse();
88
+ return pList;
89
+ }
90
+ }
91
+ Debug.LogError("なんもねえ");
92
+ return null;
93
+ }
94
+ public virtual void Move()
95
+ {
96
+
97
+ }
98
+ public virtual void AnimationEnd()
99
+ {
100
+
101
+ }
102
+ public virtual void Attack(PlayerMover pl)
103
+ {
104
+
105
+ }
106
+ }
107
+ ```
108
+ AIMoveDirAStar()の中の
109
+ nextPosition = new Vector3(path[1].x, 1, path[1].z);
110
+ でエラーを吐いているみたいです。