public void MoveTowardsByAngle() { Assert.AreEqual(Vector2Util.FromDeg(45f), Vector2Util.MoveTowardsByAngle(new Vector2(0f, 0f), new Vector2(-1f, 0.1f), 45f)); Assert.AreEqual(Vector2Util.FromDeg(90f), Vector2Util.MoveTowardsByAngle(new Vector2(0f, 0f), new Vector2(-1f, 0.1f), 90f)); Assert.AreEqual(Vector2Util.FromDeg(-45f), Vector2Util.MoveTowardsByAngle(new Vector2(0f, 0f), new Vector2(-1f, -0.1f), 45f)); Assert.AreEqual(Vector2Util.FromDeg(-90f), Vector2Util.MoveTowardsByAngle(new Vector2(0f, 0f), new Vector2(-1f, -0.1f), 90f)); }
public void Update() { if (testEnemy.enabled) { UpdateTestEnemy(); return; } if (0 < debugStartTime) { if (Stage.Current.time.time < debugStartTime) { Stage.Current.time.time = debugStartTime; } if (debugStartTime + debugLoopDuration < Stage.Current.time.time) { Stage.Current.time.time = debugStartTime; } } var preTime = Stage.Current.time.preTime; var time = Stage.Current.time.time; for (int i = 0, iCount = data.eventList.Length; i < iCount; ++i) { var row = data.eventList[i]; if (row.type == WaveEventType.None) { continue; } if (!TimeEventData.TryGetEvent(startTime + (row.startTime / 1000f), 0f, preTime, time, out var eventData)) { continue; } var pos = row.position * 16f; var enemy = CharaFactory.CreateEnemy(row.enemyName); enemy.data.position = pos; var vec = Vector2Util.FromDeg(row.angle); enemy.data.rotation = Quaternion.LookRotation((Vector3)vec); enemy.data.velocity = enemy.data.rotation * Vector3.forward; Main.Instance.stage.charaBank.Add(enemy); } }
float Draw(Rect position, SerializedProperty property, GUIContent label, bool isLayout) { // https://docs.unity3d.com/ja/current/ScriptReference/PropertyDrawer.html var startY = position.y; if (!isLayout) { EditorGUI.BeginProperty(position, label, property); } { position.height = EditorGUIUtility.singleLineHeight; var spType = property.FindPropertyRelative(nameof(model.type)); var spComment = property.FindPropertyRelative(nameof(model.comment)); var spStartTime = property.FindPropertyRelative(nameof(model.startTime)); var spEnemyName = property.FindPropertyRelative(nameof(model.enemyName)); var spPositionX = property.FindPropertyRelative(nameof(model.positionX)); var spPositionY = property.FindPropertyRelative(nameof(model.positionY)); var spAngle = property.FindPropertyRelative(nameof(model.angle)); var type = EnumUtil <WaveEventType> .GetValueAt(spType.enumValueIndex); var pos21 = new Rect(position.x + position.width * 0.5f * 0, position.y, position.width * 0.5f, position.height); var pos22 = new Rect(position.x + position.width * 0.5f * 1, position.y, position.width * 0.5f, position.height); var pos31 = new Rect(position.x + position.width * 0.3f * 0, position.y, position.width * 0.3f, position.height); var pos32 = new Rect(position.x + position.width * 0.3f * 1, position.y, position.width * 0.3f, position.height); var pos33 = new Rect(position.x + position.width * 0.3f * 2, position.y, position.width * 0.3f, position.height); bool isExpanded = property.isExpanded && type != WaveEventType.None; { if (!isLayout) { if (isExpanded) { property.isExpanded = EditorGUI.Foldout(position, property.isExpanded, label); } else { property.isExpanded = EditorGUI.Foldout(pos31, property.isExpanded, label); PropertyField(ref pos32, isLayout, spType, GUIContent.none); if (type == WaveEventType.None) { PropertyField(ref pos33, isLayout, spComment, GUIContent.none); } else { PropertyField(ref pos33, isLayout, spStartTime, GUIContent.none); } } } position.y += LineHeight; } if (isExpanded) { PropertyField(ref position, isLayout, spType); if (type == WaveEventType.None) { PropertyField(ref position, isLayout, spComment); } else if (type == WaveEventType.Spawn) { PropertyField(ref position, isLayout, spStartTime); PropertyField(ref position, isLayout, spEnemyName); PropertyField(ref position, isLayout, spPositionX); PropertyField(ref position, isLayout, spPositionY); { pos21.y = pos22.y = position.y; PropertyField(ref pos21, isLayout, spAngle); var vec = Vector2Util.FromDeg(spAngle.floatValue); if (!isLayout) { EditorGUI.BeginDisabledGroup(true); } if (!isLayout) { EditorGUI.Vector2Field(pos22, "", vec); } if (!isLayout) { EditorGUI.EndDisabledGroup(); } position.y += LineHeight; } } } } if (!isLayout) { EditorGUI.EndProperty(); } return(position.y - startY); }