コード例 #1
0
 void Awake()
 {
     if (m_event == null)
     {
         m_event = new ColliderEvent();
     }
 }
コード例 #2
0
 void RespondIfValid(Collider other, ColliderEvent response)
 {
     if (IsValid(other))
     {
         response.Invoke(other);
     }
 }
コード例 #3
0
 private void ExecuteEvent(ColliderEvent ce, object arg)
 {
     if (m_CollisionActions.ContainsKey(ce))
     {
         m_CollisionActions[ce].ForEach((a) => { a(arg); });
     }
 }
コード例 #4
0
 // Use this for initialization
 void Start()
 {
     charState = this.GetComponent <TestChar>();
     PCon      = this.GetComponent <PlayerController>();
     NT        = this.GetComponent <NotThroughFighter>();
     CEventEne = PCon.fightEnemy.GetComponent <ColliderEvent>();
 }
コード例 #5
0
 void Awake()
 {
     //スクリプト取得
     HPDir    = this.GetComponent <HPDirectorScript>();
     ASScript = Opponent.GetComponent <ArtsStateScript>();
     CEvent   = this.GetComponent <ColliderEvent>();
     SEScript = this.GetComponent <SetEffectScript>();
 }
コード例 #6
0
    private void OnCollisionEvent(Collider2D other, ColliderEvent evt)
    {
        if (CheckFilter(other))
        {
            return;
        }

        if (evt == ColliderEvent.Exit)
        {
            staying.Remove(other);
            return;
        }

        if (mode == DamageMode.Single)
        {
            bool isNew = false;

            if (!staying.TryGetValue(other, out StayInfo info))
            {
                // Track new object.
                info = new StayInfo {
                    collider    = other,
                    damageTimer = repeatDamageTime,
                    damagedOnce = false,
                };

                staying.Add(other, info);
                isNew = true;
            }

            // Initial (enter) damage.
            if (!info.damagedOnce)
            {
                info.damagedOnce = DoDamage(info.collider);
            }

            if (!isNew && repeatSingleDamage)
            {
                // Repeating damage.
                info.damageTimer -= Time.deltaTime;
                if (info.damageTimer <= 0)
                {
                    if (DoDamage(info.collider))
                    {
                        info.damageTimer = repeatDamageTime;
                    }
                }
            }
        }
        else           // DamageMode.Continuous
        {
            if (evt == ColliderEvent.Stay)
            {
                DoDamage(other);
            }
        }
    }
コード例 #7
0
        public void Add(ColliderEvent ce, Action<object> action)
        {
            if (!m_CollisionActions.ContainsKey(ce))
            {
                m_CollisionActions.Add(ce, new List<Action<object>>());
            }

            m_CollisionActions[ce].Add(action);
        }
コード例 #8
0
        public void RemoveEventListener(ColliderEvent inEventType)
        {
            switch (inEventType)
            {
            case ColliderEvent.OnHitEnter: _onHitEnter = null; break;

            case ColliderEvent.OnHitStay: _onHitStay = null; break;

            case ColliderEvent.OnHitExit: _onHitExit = null; break;
            }
        }
コード例 #9
0
        public void AddEventListener(ColliderEvent inEventType, Action <GameObject> inCallback)
        {
            switch (inEventType)
            {
            case ColliderEvent.OnHitEnter: _onHitEnter = inCallback; break;

            case ColliderEvent.OnHitStay: _onHitStay = inCallback; break;

            case ColliderEvent.OnHitExit: _onHitExit = inCallback; break;
            }
        }
コード例 #10
0
    public override void OnInspectorGUI()
    {
        serializedObject.Update();
        // DrawDefaultInspector();

        ColliderEvent script = (ColliderEvent)target;

        EditorGUILayout.PropertyField(useTagFilter);
        if (script.UseTagFilter)
        {
            EditorGUILayout.PropertyField(tags);
        }

        EditorGUILayout.PropertyField(useLayerFilter);
        if (script.UseLayerFilter)
        {
            EditorGUILayout.PropertyField(layerMask);
        }

        EditorGUILayout.PropertyField(useComponentFilter);
        if (script.UseComponentFilter)
        {
            EditorGUILayout.PropertyField(componentType);
        }

        EditorGUILayout.PropertyField(useParentComponentFilter);
        if (script.UseParentComponentFilter)
        {
            EditorGUILayout.PropertyField(parentComponentType);
        }

        EditorGUILayout.PropertyField(useChildComponentFilter);
        if (script.UseChildComponentFilter)
        {
            EditorGUILayout.PropertyField(childComponentType);
        }

        EditorGUILayout.PropertyField(onCollide);
        EditorGUILayout.PropertyField(onStay);
        EditorGUILayout.PropertyField(onExit);


        serializedObject.ApplyModifiedProperties();
    }
コード例 #11
0
ファイル: ColliderEvent.cs プロジェクト: jonntd/Xbl
    public static ColliderEvent AddColliderEvent(Transform t, bool withRigibody = false, bool trigger = true)
    {
        if (t == null)
        {
            return(null);
        }
        ColliderEvent cBase = t.GetComponent <ColliderEvent>();

        if (!cBase)
        {
            cBase = t.gameObject.AddComponent <ColliderEvent>();
        }
        AddBoxCollider(t, trigger);
        if (withRigibody)
        {
            AddRigibody(t);
        }
        return(cBase);
    }
コード例 #12
0
ファイル: TestChar.cs プロジェクト: TakumiWatabe/ActArts
    // Use this for initialization
    void Start()
    {
        //ディレクタースクリプト取得
        ASScriptEne = Pcont.fightEnemy.GetComponent <ArtsStateScript>();
        CEvent      = this.GetComponent <ColliderEvent>();
        CEventEne   = Pcont.fightEnemy.GetComponent <ColliderEvent>();
        HPDir       = this.GetComponent <HPDirectorScript>();
        DEGScript   = this.GetComponent <DebugGetEnemyScript>();
        SEScript    = this.GetComponent <SetEffectScript>();
        GScript     = this.GetComponent <GuardScript>();

        //コライダーのスクリプトを取得
        for (int i = 0; i < CEvent.HClid.Count; i++)
        {
            col.Add(CEvent.HClid[i]);
            react.Add(col[i].GetComponent <ColliderReact>());
        }

        AI = gameObject.GetComponent <EnemyAI>();
    }
コード例 #13
0
    void Start()
    {
        colliderEvent = GameObject.Find("Character").GetComponent <ColliderEvent>();
        float yPosition = 60f;
        float xPosition = -155f;

        for (int i = 1; i <= 12; i++)
        {
            shuffleNum = rnd.Next(0, cardColors.Count);
            var tmp = Instantiate(card, new Vector3(0, 0, 0), Quaternion.identity, GameObject.Find("GameCanvas").transform);
            tmp.transform.localPosition         = new Vector3(xPosition, yPosition, 0);
            tmp.GetComponent <Card>().colorFace = cardColors[shuffleNum];
            tmp.GetComponent <Card>().SetNumber(cardNumbers[shuffleNum]);
            cards.Add(tmp);
            cardColors.RemoveAt(shuffleNum);
            cardNumbers.RemoveAt(shuffleNum);
            xPosition += 100f;
            if (i % 4 == 0)
            {
                xPosition  = -155f;
                yPosition -= 100f;
            }
        }
    }
コード例 #14
0
    // Use this for initialization
    void Start()
    {
        animator = GetComponent <Animator>();

        //入力履歴の設定
        history.Clear();
        for (int i = 0; i < commandCount; i++)
        {
            history.Add("N");
        }

        inputHistory.Clear();
        for (int i = 0; i < numInputHistory; i++)
        {
            inputHistory.Add("");
        }

        inputDKey    = 5;
        inputDKeyOld = inputDKey;

        //if (controller > 0) controllerName = Input.GetJoystickNames()[controller - 1];

        //Debug.Log(Input.GetJoystickNames()[0]);
        //Debug.Log(Input.GetJoystickNames()[1]);



        if (isModel)
        {
            CEvent = this.GetComponent <ColliderEvent>();
            TChar  = this.GetComponent <TestChar>();
            audio  = GetComponent <AudioSource>();
            parent = this.transform.parent.gameObject;
            //battleDirector = this.GetComponent<BattleDirector>();
        }
    }
コード例 #15
0
        // メイドの親子付け開始
        private void _oyakoStart(Maid maid)
        {
            if (maid == null || maid.body0 == null || !maid.body0.isLoadedBody)
            {
                MSG.Error("メイド" + (maid ? maid.name : "") + "は初期化されていません。");
                return;
            }

            // 必要なオブジェクトが無ければ作る
            _makeObject();

            m_maid = maid;

            // 掴み用コライダー作成
            {
                var mcc = MaidColliderCollect.AddColliderCollect(m_maid);
                if (mcc)
                {
                    var maidColliders = mcc.GetCollider(MaidColliderCollect.ColliderType.Grab);
                    // コライダー配列が無いか、0個の場合、もしくはシーン開始から最初に親子付けされた場合
                    if (maidColliders == null ||
                        maidColliders.Count == 0 ||
                        !m_addColMaid.Contains(m_maid))
                    {
                        maidColliders = mcc.AddCollider(MaidColliderCollect.ColliderType.Grab);
                        for (int cnt = 0; cnt < maidColliders.Count; cnt++)
                        {
                            ColliderEvent action = maidColliders[cnt].gameObject.AddComponent <ColliderEvent>();
                            action.onMouseUp = m_maid.OnMouseUp;
#if DISP_COLLIDER
                            maidColliders[cnt].gameObject.AddComponent <HC.Debug.ColliderVisualizer>().Initialize(HC.Debug.ColliderVisualizer.VisualizerColorType.Red, "", 8);
#endif // DISP_COLLIDER
                        }
                        // コライダーを追加したメイドさんを覚えておく
                        m_addColMaid.Add(m_maid);
                    }
                }
            }

            // メイドさん操作用のTransformを取得
            m_maid_trans = _getTargetTransform(m_maid.gameObject);

            if (m_trans_dummy == null)
            {
                MSG.Error("m_trans_dummy がNULLです。");
            }
            if (m_maid_trans == null)
            {
                MSG.Error("m_maid_trans がNULLです。");
            }
            if (m_maid_trans.parent == null)
            {
                MSG.Error("m_maid_trans.parent がNULLです。");
            }

            if (m_trans_dummy && m_maid_trans && m_maid_trans.parent)
            {
                // 掴んだ時にメイドさんが飛ばない様にする
                _resetTransDummyPos();

                // くっついている間はハンドオブジェクトが邪魔なので見えない様にする
                _hideHandObject();

                // 親子付け開始
                IsOyako    = true;
                IsGripping = false;
                MSG.DebugPrint(m_maid.name + "の親子付け開始");
            }
        }
コード例 #16
0
 public void removeEventHandler(ColliderEvent eventType, Ps.Utils.EventHandler <Collision> handler)
 {
     dispatcher.removeEventHandler(eventType, handler);
 }
コード例 #17
0
    public override void OnInspectorGUI()
    {
        script = (ColliderEvent)target;

        EditorGUILayout.Space();
        script.mytype  = (ColliderEvent.type)EditorGUILayout.EnumPopup("Collider type", script.mytype);
        script.tagname = EditorGUILayout.TextField("Tag name", script.tagname);
        SelectType();


        EditorGUILayout.Space();
        eventfold = EditorGUILayout.Foldout(eventfold, "Events");
        if (eventfold)
        {
            EditorGUILayout.LabelField("-----------------------");

            script.EnableVoid       = EditorGUILayout.Toggle("void events", script.EnableVoid);
            script.EnableBool       = EditorGUILayout.Toggle("Bool events", script.EnableBool);
            script.EnableInt        = EditorGUILayout.Toggle("int events", script.EnableInt);
            script.EnableFloat      = EditorGUILayout.Toggle("float events", script.EnableFloat);
            script.EnableFloatArray = EditorGUILayout.Toggle("float array events", script.EnableFloatArray);
            script.EnableColor      = EditorGUILayout.Toggle("color events", script.EnableColor);

            if (script.EnableBool)
            {
                SerializedProperty onCheck = serializedObject.FindProperty("boolevents");
                EditorGUILayout.PropertyField(onCheck);
                script.boolvalue = EditorGUILayout.Toggle("Input bool value", script.boolvalue);
            }

            if (script.EnableInt)
            {
                EditorGUILayout.Space();
                SerializedProperty onCheck = serializedObject.FindProperty("intevents");
                EditorGUILayout.PropertyField(onCheck);
                script.intvalue = EditorGUILayout.IntField("Input int value", script.intvalue);
            }

            if (script.EnableFloat)
            {
                EditorGUILayout.Space();
                SerializedProperty onCheck = serializedObject.FindProperty("floatevents");
                EditorGUILayout.PropertyField(onCheck);
                script.floatvalue = EditorGUILayout.FloatField("Input float value", script.floatvalue);
            }

            if (script.EnableFloatArray)
            {
                EditorGUILayout.Space();
                SerializedProperty onCheck = serializedObject.FindProperty("floatarratevents");
                EditorGUILayout.PropertyField(onCheck);

                SerializedProperty property = serializedObject.FindProperty("floatarrayvalue");
                EditorGUILayout.PropertyField(property, new GUIContent("Input floatarray value"), true);
            }

            if (script.EnableColor)
            {
                EditorGUILayout.Space();
                SerializedProperty onCheck = serializedObject.FindProperty("colorevents");
                EditorGUILayout.PropertyField(onCheck);
                script.colorvalue = EditorGUILayout.ColorField("Input color value", script.colorvalue);
            }

            if (script.EnableVoid)
            {
                EditorGUILayout.Space();
                SerializedProperty onCheck = serializedObject.FindProperty("voidevents");
                EditorGUILayout.PropertyField(onCheck);
            }

            if (GUI.changed)
            {
                serializedObject.ApplyModifiedProperties();
            }
        }
    }