void Shoot() { Transform currentFirePoint = GetComponent <MovingInCircle>().currentFirePoint.transform; GameObject fish = Instantiate(fishPrefab, currentFirePoint.position, Quaternion.identity); FishProperties fishProperties = (FishProperties)fish.GetComponent(typeof(FishProperties)); FishCollider fishCollider = (FishCollider)fish.GetComponent(typeof(FishCollider)); fishCollider.audioSrc = hitSoundSource; SpriteRenderer renderer = (SpriteRenderer)fish.GetComponent(typeof(SpriteRenderer)); // TODO: Don't use firePoint.rotation, calculate the angle from the mouse like in PlayerMovement.cs float angle = Quaternion.Angle(currentFirePoint.rotation, Quaternion.identity); SpriteDirectionResolver.Direction direction = SpriteDirectionResolver.ResolveDirection(currentFirePoint.rotation); switch (direction) { case SpriteDirectionResolver.Direction.W: renderer.sprite = fishProperties.W; break; case SpriteDirectionResolver.Direction.NW: renderer.sprite = fishProperties.NW; break; case SpriteDirectionResolver.Direction.N: renderer.sprite = fishProperties.N; break; case SpriteDirectionResolver.Direction.NE: renderer.sprite = fishProperties.NE; break; case SpriteDirectionResolver.Direction.E: renderer.sprite = fishProperties.E; break; case SpriteDirectionResolver.Direction.SE: renderer.sprite = fishProperties.SE; break; case SpriteDirectionResolver.Direction.S: renderer.sprite = fishProperties.S; break; case SpriteDirectionResolver.Direction.SW: renderer.sprite = fishProperties.SW; break; } Rigidbody2D rigidBody = fish.GetComponent <Rigidbody2D>(); rigidBody.AddForce(currentFirePoint.right * fishForce, ForceMode2D.Impulse); Destroy(fish, 5.0f); shootSound.Play(); }
public void AddCollider() { FishCollider collider = (FishCollider)target; int childcnt = collider.transform.childCount; float radius = 50; float disFront = 0, disBack = 0, lastFrontCircleScale = 0, lastBackCircleScale = 0; for (int i = 0; i < childcnt; i++) { Transform child = collider.transform.FindChild(i.ToString()); float scale = child.localScale.x; if (i % 2 != 0) { disFront += radius * scale; } else if (i % 2 == 0 && i != 0) { disBack -= radius * scale; } else { lastBackCircleScale = scale; lastFrontCircleScale = scale; } } Object assetObj = Resources.Load("ColliderCircle"); GameObject colliderCircle = GameObject.Instantiate(assetObj) as GameObject; colliderCircle.transform.parent = collider.transform; colliderCircle.transform.localScale = Vector3.one; colliderCircle.transform.localPosition = Vector3.zero; colliderCircle.name = (childcnt).ToString(); UIWidget widget = colliderCircle.GetComponent <UIWidget>(); if (childcnt == 0) { widget.pivot = UIWidget.Pivot.Center; } else { if (childcnt % 2 != 0) { widget.pivot = UIWidget.Pivot.Left; colliderCircle.transform.localPosition = new Vector3(disFront, 0, 0); } else { widget.pivot = UIWidget.Pivot.Right; colliderCircle.transform.localPosition = new Vector3(disBack, 0, 0); } } }
private void _Build(FishCollider fish, Vector3[] path) { var root = _Create(); root.transform.position = path[PathMaker.END_INDEX]; fish.transform.position = path[PathMaker.BEGIN_INDEX]; var deadTrigger = root.GetComponent <FishDeadTrigger>(); deadTrigger.Fish = fish; var steering = fish.GetComponent <UnitySteer.Behaviors.SteerForPathSimplified>(); steering.Path = new UnitySteer.SplinePathway(path.ToList(), 1); }
private static Vector3 _GetPosition() { var defaultPosition = Input.mousePosition; var target = FishEnvironment.Instance.SelectedId; if (target != 0) { var fish = FishCollider.Find(target); if (fish != null) { var firstPosition = fish.transform.position; var cameraPosition = CameraHelper.Middle.GetScreenPoint(firstPosition); return(cameraPosition); } } return(defaultPosition); }
public void UpdateColliderPosition() { FishCollider collider = (FishCollider)target; int childcnt = collider.transform.childCount; float radius = 30; float disFront = 0, disBack = 0, lastFrontCircleScale = 0, lastBackCircleScale = 0; for (int i = 0; i < childcnt - 1; i++) { Transform child = collider.transform.FindChild(i.ToString()); float scale = child.localScale.x; if (i % 2 != 0) { disFront += radius * scale; } else if (i % 2 == 0 && i != 0) { disBack -= radius * scale; } else { lastBackCircleScale = scale; lastFrontCircleScale = scale; } Transform nextChild = collider.transform.FindChild((i + 1).ToString()); if ((i + 1) % 2 != 0) { nextChild.localPosition = new Vector3(disFront, 0, 0); } else { nextChild.localPosition = new Vector3(disBack, 0, 0); } } }
public override void OnInspectorGUI() { FishCollider collider = (FishCollider)target; string scaleStr = ""; int childcnt = collider.transform.childCount; for (int i = 0; i < childcnt; i++) { Transform child = collider.transform.FindChild(i.ToString()); scaleStr += child.localScale.x.ToString() + ","; } scaleStr = scaleStr.TrimEnd(','); EditorGUILayout.TextArea(scaleStr); GUILayout.Space(5); if (GUILayout.Button("添加碰撞圆")) { AddCollider(); } if (childcnt > 0) { for (int i = 0; i < childcnt; i++) { Transform child = collider.transform.FindChild(i.ToString()); EditorGUILayout.BeginHorizontal(); float scale = EditorGUILayout.FloatField(i.ToString() + " 缩放", child.localScale.x); child.localScale = new Vector3(scale, scale, scale); UpdateColliderPosition(); if (i == childcnt - 1 && GUILayout.Button("删除")) { GameObject.DestroyImmediate(child.gameObject); } EditorGUILayout.EndHorizontal(); } } }
public FishDeadReleaser(FishCollider fish) { // TODO: Complete member initialization this.fish = fish; fish.DeadEvent += fish_DeadEvent; }
private void _AddFish(FishCollider fish) { _Fishs.Add(new Assets.FishHunter.Script.Pure.FishDeadReleaser(fish)); }