private void OnEnable() { if (hitboxBackgroundStyle == null) { hitboxBackgroundStyle = new GUIStyle(); hitboxBackgroundStyle.normal.background = MakeTexture(1, 1, new Color(0f, 0f, 0f, 0.2f)); } //When changing scenes the background is deleted else if (hitboxBackgroundStyle.normal.background == null) { hitboxBackgroundStyle.normal.background = MakeTexture(1, 1, new Color(0f, 0f, 0f, 0.2f)); } targetComponents = target as HitBoxComponent; AnimationHelper.init(); targetComponents.SyncKeyFramesWithSimpleAnimator(); if (targetComponents.inspectorTemp != null) { var state = targetComponents.GetState(targetComponents.GetStateNames()[targetComponents.inspectorTemp.animationindex]); AnimationHelper.SetCurrentClip(state.clip); traceAnimMode = (TraceAnimMode)targetComponents.inspectorTemp.traceAnimMode; } }
private void SetHitBoxesForEnemie(EnemieElementsComponent enemie) { foreach (var rb in enemie.ragdollsRigidbodies) { HitBoxComponent hitBox = rb.gameObject.AddComponent <HitBoxComponent>(); hitBox.enemieElements = enemie; } }
private static void DrawHitBoxComponentGizmo(HitBoxComponent target, GizmoType gizmoType) { if (target.gizmoController.drawGizmoData == null) { return; } var color = new Color32(0, 0, 255, 210); //GizmoType.Active の時は赤色にする if ((gizmoType & GizmoType.Active) == GizmoType.Active) { color = new Color(Color.red.r, Color.red.g, Color.red.b, 210); } var transform = target.gameObject.transform; foreach (var keyframe in target.gizmoController.drawGizmoData) { var sign = target.GetDirectionSign(); foreach (var e in keyframe.colliders) { if (e.colliderParam is RectColliderParam) { var rect = e.colliderParam as RectColliderParam; var rectcenter = rect.rect.center; rectcenter.Scale(new Vector3(sign, 1.0f, 1.0f)); var directedrect = rect.rect; directedrect.center = rectcenter; var position = new Vector3(directedrect.position.x + transform.position.x, directedrect.position.y + transform.position.y, transform.position.z); DrawRectGizmo(position, rect.rect.size, color); } else if (e.colliderParam is SphereColliderParam) { var sphere = e.colliderParam as SphereColliderParam; var preposition = sphere.position; preposition.Scale(new Vector3(sign, 1.0f, 1.0f)); var position = new Vector3(preposition.x + transform.position.x, preposition.y + transform.position.y, transform.position.z); DrawSphereGizmo(position, sphere.radius, color); } else if (e.colliderParam is CapsuleColliderParam) { var capsule = e.colliderParam as CapsuleColliderParam; var prestart = capsule.start; prestart.Scale(new Vector3(sign, 1.0f, 1.0f)); var start = new Vector3(prestart.x + transform.position.x, prestart.y + transform.position.y, transform.position.z); var preend = capsule.end; preend.Scale(new Vector3(sign, 1.0f, 1.0f)); var end = new Vector3(preend.x + transform.position.x, preend.y + transform.position.y, transform.position.z); DrawCapsuleGizmo(start, end, capsule.radius, color); } } } }
void IFixedUpdating.OnFixedUpdate() { bullets = game.bullets; foreach (var bullet in game.bullets) { if (!bullet.canCheck) { continue; } Collider[] colliders = Physics.OverlapSphere(bullet.transform.position, bullet.radius); foreach (var collider in colliders) { HitBoxComponent hitBoxComponent = collider.gameObject.GetComponent <HitBoxComponent>(); if (hitBoxComponent) { hitBoxComponent.ActivateAttack(bullet.transform.position); } } if (colliders.Length != 0 || bullet.transform.position.y < -5f) { StartCoroutine(WaitBeforeVFXEnded(bullet)); } } }