Example #1
0
    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();
    }
Example #2
0
    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);
            }
        }
    }
Example #3
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);
    }
Example #4
0
    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);
    }
Example #5
0
    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);
            }
        }
    }
Example #6
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();
            }
        }
    }
Example #7
0
 public FishDeadReleaser(FishCollider fish)
 {
     // TODO: Complete member initialization
     this.fish       = fish;
     fish.DeadEvent += fish_DeadEvent;
 }
Example #8
0
 private void _AddFish(FishCollider fish)
 {
     _Fishs.Add(new Assets.FishHunter.Script.Pure.FishDeadReleaser(fish));
 }