コード例 #1
0
 public void ReturnKnife()
 {
     Destroy(knife);
     knife           = null;
     knifeController = null;
     HideKnife(false);
 }
コード例 #2
0
 void Start()
 {
     knifeController   = transform.parent.GetComponent <KnifeController>();
     collider          = GetComponent <Collider>();
     safeToWarp        = true;
     lastKnifePosition = knifeController.GetPosition();
 }
コード例 #3
0
ファイル: LevelManager.cs プロジェクト: FadyNader/2d-game
    void SpwanKnifes()
    {
        GameObject Knifes = Instantiate(KnifesGO, KnifesSpwanPoint.position, Quaternion.identity);

        CurrKnife = Knifes.GetComponent <KnifeController>();
        CurrKnife.ShowAnimation();
    }
コード例 #4
0
ファイル: LevelManager.cs プロジェクト: FadyNader/2d-game
    public void GenereteLevel()
    {
        KnifesCount = Random.Range(1, 8);
        for (int i = 0; i < knifeicon.Count; i++)
        {
            if (i >= KnifesCount)
            {
                knifeicon[i].color = new Color(knifeicon[i].color.r, knifeicon[i].color.g, knifeicon[i].color.b, 0);
            }
        }
        int   stickingKnife = Random.Range(1, 5);
        float MaxAngle      = 360 / (float)stickingKnife;
        float LastAngle     = 0;

        for (int i = 0; i < stickingKnife; i++)
        {
            float angle = LastAngle + Random.Range(20, MaxAngle) * Mathf.Deg2Rad;
            LastAngle = angle;
            Vector3    pos   = Target.transform.position + new Vector3(Mathf.Sin(angle), Mathf.Cos(angle), 0) * 1.25f;
            GameObject knife = Instantiate(KnifesGO, pos, Quaternion.identity);
            knife.transform.up     = Target.transform.position - knife.transform.position;
            knife.transform.parent = Target.transform;
            KnifeController knifeBehaviour = knife.GetComponent <KnifeController>();
            knifeBehaviour.myCollider.enabled = true;
            CurrHitKnifes.Add(knifeBehaviour.myRigidbody);
        }

        CurrKnifesCount = KnifesCount;
        SpwanKnifes();
    }
コード例 #5
0
    void Start()
    {
        _finishScreen = false;
        _loseScreen   = false;

        _canvas   = GameObject.Find("Canvas").GetComponent <Canvas>();
        _rtCanvas = _canvas.GetComponent(typeof(RectTransform)) as RectTransform;

        _nextButtonObj  = GameObject.Find("NextButton");
        _startButtonObj = GameObject.Find("StartButton");
        _retryButtonObj = GameObject.Find("RetryButton");
        _lifesObj       = GameObject.Find("Lifes");

        _loadingBar        = GameObject.Find("LoadingBar").GetComponent <Image>();
        _staticBar         = GameObject.Find("StaticBar").GetComponent <Image>();
        _currentLevelImage = GameObject.Find("CurrentLevelImage").GetComponent <Image>();
        _finishImage       = GameObject.Find("FinishImage").GetComponent <Image>();
        _crystalImage      = GameObject.Find("CrystalsImage").GetComponent <Image>();

        _nextButton  = _nextButtonObj.GetComponent <Button>();
        _startButton = _startButtonObj.GetComponent <Button>();
        _retryButton = _retryButtonObj.GetComponent <Button>();

        _currentLevel  = GameObject.Find("CurrentLevel").GetComponent <Text>();
        _crystalsCount = GameObject.Find("CrystalsCount").GetComponent <Text>();

        _chunkPlacer     = GameObject.Find("ChunkPlacer").GetComponent <ChunkPlacer>();
        _knifeController = GameObject.Find("Knife").GetComponent <KnifeController>();
        _levelManager    = GameObject.Find("LevelManager").GetComponent <LevelManager>();
    }
コード例 #6
0
 // detach knife on warp end
 void OnWarpEnd(object sender, object args)
 {
     if (attachedKnife)
     {
         attachedKnife = null;
     }
 }
コード例 #7
0
    /*
     * Called by PlayerKnifeController prior to beginning the warp to set up variables
     */
    public void Setup(float _fov, Vector3 _startPos, KnifeController _knifeController, Vector3 _camRelativePos, Quaternion _startRot, Quaternion _endRot, bool _gravityShift, FibreOpticController _fibreController)
    {
        startPos           = _startPos;
        startRot           = _startRot;
        transform.position = startPos;
        transform.rotation = startRot;

        knifeController = _knifeController;
        endRot          = _endRot;
        camRelativePos  = endRot * _camRelativePos;
        gravityShift    = _gravityShift;

        cam.fieldOfView     = _fov;
        rb.detectCollisions = true;
        Blackout(false);

        if (_fibreController)
        {
            fibreOpticController = _fibreController;
            fibreOpticWarp       = true;

            fibreOpticController.WarpKnife(knifeController);
        }

        CalculateDuration();
    }
コード例 #8
0
    /*
     * Retarget active missiles to the knife
     */
    void RedirectMissiles()
    {
        KnifeController knife = playerKnifeController.GetActiveKnifeController();

        if (knife == null)
        {
            return;
        }

        // Get all currently active missiles
        List <MissileController> missiles = new List <MissileController>();

        foreach (GameObject obj in GameObject.FindGameObjectsWithTag("Missile"))
        {
            MissileController controller = obj.GetComponent <MissileController>();
            if (controller != null)
            {
                missiles.Add(controller);
            }
        }

        if (missiles.Count <= 0)
        {
            return;
        }

        // apply new target
        foreach (MissileController missile in missiles)
        {
            // set target here!
            missile.SetTarget(knife.transform);
        }
    }
コード例 #9
0
ファイル: Launcher.cs プロジェクト: matrix09/NinjaFruit
    public void OnStart()
    {
        GlobalHelper.SetBackImg("background");

        //加载垃圾回收站
        GlobalHelper.LoadGarbageCollection();

        //摆放launcher的位置
        float   y = GlobalHelper.GetVisibleYPos(transform.position.z, MaxSize);
        Vector3 v = transform.position;

        transform.position = new Vector3(v.x, y, v.z);

        //生成水果
        InvokeRepeating("InstantiateFruites", 0.8f, 0.7f);

        //加载刀片
        m_kc = KnifeController.InstantiateMyKnife(v.z);

        //加载uiscene_game
        Transform ui = GlobalHelper.OpenUISceneByName("UIScene_Game");

        m_uigame = ui.GetComponent <UIScene_Game>();
        m_uigame.RegisterSliceMissle(this);
    }
コード例 #10
0
    void PressLogin(GameObject _obj)
    {
        //销毁UI
        Destroy(gameObject);

        //加载Game UI
        UIScene_Game ui_game = BasePlayer.UIMgr.UI <UIScene_Game>();

        #region 做了三个发射器
        float height = Camera.main.orthographicSize / 2f;
        //启动发射器
        for (int i = 0; i < 3; i++)
        {
            Vector3 pos = new Vector3(
                Camera.main.transform.position.x,
                (Camera.main.transform.position.y + Camera.main.orthographicSize - (i + 1) * (height)),
                0f
                );

            GameObject obj = Instantiate(Resources.Load("Controller/MonsterLauncher")) as GameObject;
            obj.transform.position = pos;
            MonsterLauncher ml = obj.GetComponent <MonsterLauncher>();
            ml.OnStart(ui_game);
        }
        #endregion

        //播放声音
        AudioManager.PlayAudio(null, eAudioType.Audio_BackGround, "BackGround", 1, true);

        //加载刀片
        KnifeController.CreateKnife();
    }
コード例 #11
0
    /*
     * Throw knife at given strength
     */
    void ThrowKnife(float _strength, bool _secondary = false)
    {
        if (currentWarps < 1)
        {
            return;
        }

        // TODO: replace with consistent knife instances. one for each type
        // instantiate knife prefab
        knife           = Instantiate((_secondary) ? secondaryKnifePrefab : primaryKnifePrefab, transform.position, GlobalGravityControl.GetGravityRotation());
        knifeController = knife.GetComponent <KnifeController>();

        // check that we have actually got a knife
        if (knifeController == null)
        {
            Debug.LogError("No KnifeController found on knife prefab");
            return;
        }

        // set up and throw knife object
        knifeController.Setup(knifeInHand.transform, warpLookAheadCollider);
        knifeController.Throw(transform.forward * _strength);

        // hide knife view object
        HideKnife(true);
    }
コード例 #12
0
 public ProjectInfrastructure(MonoBehaviourContainer monoBehaviourContainer)
 {
     _monoBehaviourContainer = monoBehaviourContainer;
     _UIController           = new UIController(monoBehaviourContainer.UIView);
     _targetCicleController  = new TargetCicleController(monoBehaviourContainer.TargetCicleFactory);
     _knifeController        = new KnifeController(monoBehaviourContainer.KnifeFactory);
     _coinBonusController    = new CoinBonusController(monoBehaviourContainer.CoinBonusFactory);
     _gameplayController     = new GameplayController(_UIController, _targetCicleController);
 }
コード例 #13
0
    // attaches knife to other end of fibreoptic
    public void WarpKnife(KnifeController _knifeController)
    {
        if (!IsConnected())
        {
            Debug.LogError("Not connected to other FibreOpticController");
            return;
        }

        otherEndFibreOpticController.AttachKnife(_knifeController);
    }
コード例 #14
0
    // Создает новый нож, если нож уже есть на сцене , выходим из метода

    private void CreateNewKnife()
    {
        if (knife != null)
        {
            return;
        }
        else
        {
            knife = Instantiate(knifePrefab, knifeSpawn, Quaternion.identity).GetComponent <KnifeController>();
        }
    }
コード例 #15
0
 void OnAttachKnife(object sender, object args)
 {
     knifeController    = (KnifeController)args;
     knifeObject        = knifeController.gameObject;
     safeWarpCollider   = knifeObject.GetComponentInChildren <SafeWarpCollider>();
     colliding          = false;
     transform.position = knifeObject.transform.position;
     transform.rotation = GlobalGravityControl.GetGravityRotation();
     lastUsablePos      = knifeObject.transform.position;
     Enabled(true);
 }
コード例 #16
0
    //bool isDoorExist = false;
    // Use this for initialization
    void Start()
    {
        m_rigidbody2D   = transform.GetComponent <Rigidbody2D> ();
        m_boxCollider2D = transform.GetComponent <BoxCollider2D> ();

        m_rayDistance = m_boxCollider2D.bounds.extents.y + 0.1f;

        m_state = WeaponState.None;

        knifeController = GameObject.Find("Knife").GetComponent <KnifeController> ();
    }
コード例 #17
0
    /*
     * Sticks knife to this fibreoptic end.
     * Positions to allow easy warp transition
     */
    public void AttachKnife(KnifeController _knifeController)
    {
        attachedKnife = _knifeController;

        // stick knife into this end. Should allow lookahead colliders to do their thing
        // places knife out from surface to give lookahead more room
        Vector3 normalVector  = GetDirection();
        Vector3 knifePosition = transform.position + normalVector; // gravity offset to align camera

        _knifeController.StickToSurface(knifePosition, normalVector, gameObject, true);
    }
コード例 #18
0
 public void Throwing()
 {
     if (_isCreating)
     {
         if (Time.time > _currentCoolDownThrow && _tempView != null)
         {
             _currentCoolDownThrow = Time.time + _coolDownThrow;
             _tempController       = new KnifeController(_tempView, _knifeData.Knife);
             _tempController.Throw();
             _isCreating = false;
             _tempController.GameOver += EndGame;
         }
     }
 }
コード例 #19
0
ファイル: LevelManager.cs プロジェクト: FadyNader/2d-game
 void ShootKnife()
 {
     CurrKnife.Shoot();
     CurrKnifesCount--;
     knifeicon[CurrKnifesCount].color = new Color(0, 0, 0, 0.5f);
     if (CurrKnifesCount > 0)
     {
         SpwanKnifes();
     }
     else
     {
         CurrKnife = null;
     }
 }
コード例 #20
0
    private void Awake()
    {
        //加载登录水果
        FruitController fc = FruitController.InstantiateMyFruit(
            Vector3.zero, //位置
            Vector3.zero, //旋转值
            eFruitState.FruitState_Login, eFruitType.Fruit_Melon, SliceEvent);

        //加载刀片
        KnifeController.InstantiateMyKnife(fc.transform.position.z);

        //设置背景图片
        GlobalHelper.SetBackImg("LoginBackImg2");
    }
コード例 #21
0
    private void Throw()
    {
        if (m_PlayerManager.m_AvailableKnives <= 0)
        {
            return;
        }
        m_Animator.SetTrigger("throw");
        GameObject      knifeObject     = Instantiate(m_KnivePrefab, KnifeNoise(), Quaternion.identity);
        KnifeController knifeController = knifeObject.GetComponent <KnifeController>();

        knifeController.SetDirection(m_PlayerController.m_LookingDirection);
        knifeController.m_PlayerManager = m_PlayerManager;
        m_PlayerManager.m_AvailableKnives--;
        knifeController.DisableCrabboCollison(m_PlayerManager.m_CapsuleCollider2D);
    }
コード例 #22
0
    public static KnifeController CreateKnife()
    {
        UnityEngine.Object obj  = Resources.Load("Prefabs/KnifeController");
        GameObject         _obj = Instantiate(obj) as GameObject;

        _obj.transform.position   = new Vector3(0, 0, 0);
        _obj.transform.rotation   = Quaternion.identity;
        _obj.transform.localScale = Vector3.one;

        KnifeController kc = _obj.GetComponent <KnifeController>();

        if (null == kc)
        {
            kc = _obj.AddComponent <KnifeController>();
        }

        return(kc);
    }
コード例 #23
0
 // Обращается к ножу , который готов к выстрелу,
 // придает ему силу броска
 private void KnifeShot()
 {
     knife.Shot();
     knife = null;
     StartCoroutine(Reloader());
 }
コード例 #24
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.name == "Barrier")
        {
            m_isStay = true;
            Disappear();
        }


        if (collision.gameObject.name == "Wall")
        {
            isFlying = false;
            List <int> touched = new List <int> ();
            for (int i = 0; i < m_detectCount; i++)
            {
                Vector3 rotateQuaternion = Quaternion.AngleAxis(interval * i, Vector3.forward) * Vector3.up;


                RaycastHit2D raycastHit2D = Physics2D.Raycast(transform.position, rotateQuaternion, m_radius, m_layerMask);
                if (raycastHit2D.collider != null)
                {
                    Debug.DrawLine(transform.position, raycastHit2D.point, Color.green, 20f);

                    touched.Add(i);
                    //Debug.Log ("Angle:" + i);
                }
            }
            if (touched.Count == 0)
            {
                m_isStay = true;
                Disappear();
                return;
            }
            float rotate = FindLeftestLine(touched) * interval - (touched.Count - 1) * interval / 2;

            if (rotate > 360)
            {
                rotate -= 360;
            }
            rotate -= 90;
            transform.localRotation = Quaternion.Euler(0, 0, rotate);

            //Debug.Log ("Rotate:" + rotate);

            Debug.DrawRay(transform.position, transform.TransformDirection(Vector2.right), Color.red, 20f);


            m_isStay = true;
            //StartCoroutine (Disappear (5));
        }

        if (m_isStay)
        {
            if (collision.gameObject.name == "Hero")
            {
                Transform hero = collision.gameObject.transform;
                //Debug.Log (hero.GetComponent<Rigidbody2D> ().velocity.sqrMagnitude);
                Vector2 heroVelocity = hero.GetComponent <Rigidbody2D> ().velocity;
                if (heroVelocity.sqrMagnitude > 1f)
                {
                    //Vector3 heroVec = hero.TransformDirection (Vector3.up);
                    Vector2 doorNormal = transform.TransformDirection(Vector2.right);

                    float dotResult = Vector2.Dot(heroVelocity, doorNormal) / heroVelocity.magnitude * doorNormal.magnitude;


                    if (dotResult <= -0.3f)
                    {
                        Vector3 siblingNormal = m_sibline.transform.TransformDirection(Vector3.right);

                        bool isSiblingStay = m_sibline.GetComponent <DoorController> ().GetIsDoorStay();

                        if (isSiblingStay)
                        {
                            float angle;
                            float normalDotCos = Vector2.Dot(new Vector2(doorNormal.x, doorNormal.y), new Vector2(siblingNormal.x, siblingNormal.y)) / doorNormal.magnitude * siblingNormal.magnitude;

                            if (normalDotCos <= -0.9f)
                            {
                                angle = 180;
                            }
                            else if (normalDotCos >= 0.9)
                            {
                                angle = 0;
                            }
                            else
                            {
                                angle = Mathf.Acos(normalDotCos) * Mathf.Rad2Deg;
                            }

                            Debug.Log("angle : " + angle);
                            Vector3 axis;
                            if (normalDotCos <= -0.9f)
                            {
                                axis = Vector3.forward;
                            }
                            else if (normalDotCos >= 0.9)
                            {
                                axis = Vector3.back;
                            }
                            else
                            {
                                axis = Vector3.Cross(doorNormal, siblingNormal);
                            }

                            Debug.Log("Axis : " + axis);
                            Rigidbody2D heroRigid = hero.GetComponent <Rigidbody2D> ();

                            //get negative
                            Vector3 velocity = heroRigid.velocity;
                            velocity.x = -velocity.x;
                            velocity.y = -velocity.y;
                            velocity.z = -velocity.z;

                            Debug.DrawRay(transform.position, velocity.normalized, Color.yellow, 20f);
                            Debug.Log("Before rotation : " + velocity);

                            //TODO  Adding a drag coefficient make player slow down
                            heroRigid.velocity = Quaternion.AngleAxis(angle, axis) * velocity;

                            Debug.Log("After rotation : " + heroRigid.velocity);
                            Debug.DrawRay(m_sibline.position, heroRigid.velocity.normalized, Color.yellow, 20f);

                            Vector2 padding = heroRigid.velocity.normalized * m_radius;

                            hero.position = m_sibline.position + new Vector3(padding.x, padding.y, 0);
                        }
                    }
                }
            }

            if (collision.gameObject.name == "Knife")
            {
                Transform knife = collision.gameObject.transform;

                KnifeController knifeController = knife.GetComponent <KnifeController> ();

                if (knifeController.GetIsFlying())
                {
                    //Vector2 dir = knifeController.GetDir ();


                    bool isSiblingStay = m_sibline.GetComponent <DoorController> ().GetIsDoorStay();
                    if (isSiblingStay)
                    {
                        //Start calculate
                        Vector2 doorNormal    = transform.TransformDirection(Vector2.right);
                        Vector3 siblingNormal = m_sibline.transform.TransformDirection(Vector3.right);

                        Vector3 dir = knifeController.GetDir();
                        knife.position = m_sibline.position + dir * m_radius;
                    }


                    //Vector2 heroVelocity = hero.GetComponent<Rigidbody2D> ().velocity;
                    //if (heroVelocity.sqrMagnitude > 1f) {

                    //	//Vector3 heroVec = hero.TransformDirection (Vector3.up);
                    //	Vector2 doorNormal = transform.TransformDirection (Vector2.right);

                    //	float dotResult = Vector2.Dot (heroVelocity, doorNormal) / heroVelocity.magnitude * doorNormal.magnitude;


                    //	if (dotResult <= -0.3f) {

                    //		Vector3 siblingNormal = m_sibline.transform.TransformDirection (Vector3.right);

                    //		bool isSiblingStay = m_sibline.GetComponent<DoorController> ().GetIsDoorStay ();

                    //		if (isSiblingStay) {

                    //			float angle;
                    //			float normalDotCos = Vector2.Dot (new Vector2 (doorNormal.x, doorNormal.y), new Vector2 (siblingNormal.x, siblingNormal.y)) / doorNormal.magnitude * siblingNormal.magnitude;

                    //			if (normalDotCos <= -0.9f) {
                    //				angle = 180;

                    //			} else if (normalDotCos >= 0.9) {
                    //				angle = 0;
                    //			} else {
                    //				angle = Mathf.Acos (normalDotCos) * Mathf.Rad2Deg;
                    //			}

                    //			Debug.Log ("angle : " + angle);
                    //			Vector3 axis;
                    //			if (normalDotCos <= -0.9f) {
                    //				axis = Vector3.forward;
                    //			} else if (normalDotCos >= 0.9) {
                    //				axis = Vector3.back;
                    //			} else {
                    //				axis = Vector3.Cross (doorNormal, siblingNormal);
                    //			}

                    //			Debug.Log ("Axis : " + axis);
                    //			Rigidbody2D heroRigid = hero.GetComponent<Rigidbody2D> ();

                    //			//get negative
                    //			Vector3 velocity = heroRigid.velocity;
                    //			velocity.x = -velocity.x;
                    //			velocity.y = -velocity.y;
                    //			velocity.z = -velocity.z;

                    //			Debug.DrawRay (transform.position, velocity.normalized, Color.yellow, 20f);
                    //			Debug.Log ("Before rotation : " + velocity);

                    //			heroRigid.velocity = Quaternion.AngleAxis (angle, axis) * velocity;

                    //			Debug.Log ("After rotation : " + heroRigid.velocity);
                    //			Debug.DrawRay (m_sibline.position, heroRigid.velocity.normalized, Color.yellow, 20f);

                    //			Vector2 padding = heroRigid.velocity.normalized * m_radius;

                    //			hero.position = m_sibline.position + new Vector3 (padding.x, padding.y, 0);

                    //		}
                    //	}
                    //}
                }
            }
        }
    }
コード例 #25
0
    /*
     * Warps the player to the current knife position, inheriting velocity and moving gravity vectors if required
     */
    public void WarpToKnife(bool _shiftGravity, KnifeController _knifeController, FibreOpticController _fibreOpticController = null)
    {
        if (frozen)
        {
            return;
        }

        // record starting position and rotation for transitionCamera
        Vector3    camStartPos    = cam.transform.position;
        Quaternion camStartRot    = cam.transform.rotation;
        Vector3    relativeFacing = cam.transform.forward;

        Vector3 newGravDirection = _knifeController.GetGravVector();

        bool fibreOpticWarp = _fibreOpticController != null;

        // Shift gravity if the difference between current gravity and surface normal is
        // above the threshold defined by warpGravShiftAngle
        float surfaceDiffAngle = Vector3.Angle(-transform.up, newGravDirection);
        bool  gravityShift     = (_shiftGravity && surfaceDiffAngle > warpGravShiftAngle && newGravDirection != Vector3.zero);

        if (gravityShift)
        {
            this.PostNotification(GravityWarpNotification, _knifeController.GetStuckObject());
        }
        else
        {
            this.PostNotification(WarpNotification);
        }

        // rotate to face new direction at end of warp.
        // needed for gravity and fibreoptic warps
        if (gravityShift)
        {
            RotateToDirection(newGravDirection, relativeFacing);
        }
        else if (fibreOpticWarp)
        {
            RotateToDirection(currentGravVector, _fibreOpticController.GetExitDirection(), true);
        }

        // Determine transitionCamera end rotation
        Quaternion camEndRot = (gravityShift) ? transform.rotation : camStartRot;

        // Setup transitionCamera
        transCamController.Setup(cam.fieldOfView, camStartPos, _knifeController, cameraRelativePos, camStartRot, camEndRot, gravityShift, _fibreOpticController);

        cam.enabled = false;
        Freeze();

        // Begin warp transition
        transCamController.StartTransition();

        if (gravityShift)
        {
            GlobalGravityControl.TransitionGravity(newGravDirection, transCamController.GetDuration());

            // Begin gravity shift countdown coroutine
            if (gravShiftTimerCoroutine != null)
            {
                StopCoroutine(gravShiftTimerCoroutine);
            }

            gravShiftTimerCoroutine = StartCoroutine("GravShiftCountdown");
        }
    }
コード例 #26
0
 public void Init(KnifeController knifeController, float lodgeFactor)
 {
     this.knifeController = knifeController;
     this.lodgeFactor     = lodgeFactor;
 }
コード例 #27
0
 void Start()
 {
     _chunkPlacer     = GameObject.Find("ChunkPlacer").GetComponent <ChunkPlacer>();
     _knifeController = GameObject.Find("Knife").GetComponent <KnifeController>();
     _UIManager       = GameObject.Find("Canvas").GetComponent <UIManager>();
 }
コード例 #28
0
 // Use this for initialization
 void Start()
 {
     knifeController = GetComponent <KnifeController>();
 }
コード例 #29
0
 void Start()
 {
     _knifeController = GameObject.Find("Knife").GetComponent <KnifeController>();
 }
コード例 #30
0
 public void Dispose()
 {
     _tempController.GameOver -= EndGame;
     _tempController           = null;
     GameObject.Destroy(_tempView.gameObject);
 }