Пример #1
0
        public Object3()
        {
            Sprite.TextureSource = "texture";
            EditorPath           = "Colliders";
            Mass = 32;

            for (int i = 0; i < 50; i++)
            {
                //springs.Add(new Spring());
            }

            //   Speed = random_range(0.5, 2);
            //  Friction = 0.05;

            int index = irandom(50);

            //springs[index].Splash(10);
            endPos = new Vector2(irandom_range(-100, 100), irandom_range(-100, 100));

            // This creates a new circle collider
            // setting some properties
            cc            = new ColliderCircle();
            cc.Radius     = 64;
            cc.Name       = "main";
            cc.GameObject = this;

            // Add collider to the list of active colliders
            Colliders.Add(cc);

            EditorOptions = new[] { "I can have", "My own options", "Here" };

            // This will trigger script "MyCollision" when our collider main collides with collider "main" of any "Object3"
            // last arg ensures that the check will be triggered on each frame without explicit ask for it
            RegisterCollider(cc, typeof(Object3), "main", typeof(ColliderRectangle), MyCollision, true);
        }
 public void UpdateState2()
 {
     _time++;
     _curScale     = MathUtil.GetEaseOutQuadInterpolation(State1EndScale, State2EndScale, _time, _duration);
     _detectRadius = _curScale * DefaultRadius;
     //CheckCollisionWithEnemyBullets();
     //CheckCollisionWithEnemy();
     for (int i = 0; i < BombCount; i++)
     {
         _bombsTf[i].localScale = new Vector3(_curScale, _curScale, 1);
         _colliderList[i].SetSize(_detectRadius, _detectRadius);
     }
     if (_time >= _duration)
     {
         // 全屏伤害
         ColliderCircle collider = ColliderManager.GetInstance().CreateColliderByType(eColliderType.Circle) as ColliderCircle;
         collider.SetSize(500, 500);
         collider.SetColliderGroup(eColliderGroup.EnemyBullet | eColliderGroup.Enemy);
         collider.SetPosition(Global.PlayerPos.x, Global.PlayerPos.y);
         collider.SetEliminateType(eEliminateDef.PlayerSpellCard);
         collider.SetHitEnemyDamage(150);
         collider.SetExistDuration(1);
         _curState = 3;
     }
 }
Пример #3
0
        public oBallStatic()
        {
            EditorPath = "Collisions";

            ColliderCircle cr = new ColliderCircle(this);

            cr.Position   = Position;
            cr.Radius     = 64;
            cr.Name       = "Main";
            cr.GameObject = this;

            Colliders.Add(cr);

            box1 = new DarkCheckBox()
            {
                Text = "On", AutoSize = true
            };
            box1.CheckStateChanged += box1event;


            box2 = new DarkCheckBox()
            {
                Text = "Off", AutoSize = true
            };
            box2.CheckStateChanged += box2event;

            EditorProperties    = new Control[3];
            EditorProperties[0] = new DarkLabel()
            {
                Text = "Toggle particles", AutoSize = true
            };
            EditorProperties[1] = box1;
            EditorProperties[2] = box2;
        }
Пример #4
0
        public Object3()
        {
            Sprite.TextureSource = "texture";
            EditorPath           = "Colliders";
            Mass = 32;

            for (int i = 0; i < 50; i++)
            {
                //springs.Add(new Spring());
            }

            //   Speed = random_range(0.5, 2);
            //  Friction = 0.05;

            int index = irandom(50);

            //springs[index].Splash(10);
            endPos = new Vector2(irandom_range(-100, 100), irandom_range(-100, 100));

            // This creates a new circle collider
            // setting some properties
            cc            = new ColliderCircle(this);
            cc.Radius     = 64;
            cc.Name       = "main";
            cc.GameObject = this;

            // Add collider to the list of active colliders
            // Colliders.Add(cc);

            EditorOptions = new[] { "I can have", "My own options", "Here" };
        }
Пример #5
0
    public ObjectColliderBase CreateColliderByType(eColliderType type)
    {
        ObjectColliderBase collider = null;

        switch (type)
        {
        case eColliderType.Circle:
            collider = new ColliderCircle();
            break;

        case eColliderType.Rect:
            collider = new ColliderRect();
            break;

        case eColliderType.ItalicRect:
            collider = new ColliderItalicRect();
            break;

        default:
            Logger.LogError("Collider Type " + type + " is not exist!");
            break;
        }
        _colliderList.Add(collider);
        _colliderCount++;
        return(collider);
    }
Пример #6
0
    /// <summary>
    /// 创建一个销毁敌机子弹以及敌机的ObjectCollider
    /// </summary>
    private void CreateEliminateEnemyCollider(Vector2 pos)
    {
        // 清除子弹用的collider
        ColliderCircle collider = ColliderManager.GetInstance().CreateColliderByType(eColliderType.Circle) as ColliderCircle;

        collider.SetPosition(pos);
        collider.SetSize(0, 0);
        collider.SetEliminateType(eEliminateDef.SpellCardFinish);
        collider.SetColliderGroup(eColliderGroup.EnemyBullet | eColliderGroup.Enemy);
        collider.ScaleToSize(400, 400, 30);
        collider.SetExistDuration(30);
    }
Пример #7
0
        public override void EvtCreate()
        {
            ColliderCircle cr = new ColliderCircle(this);

            cr.Name       = "MainCollider";
            cr.GameObject = this;
            cr.Position   = Position;
            cr.Radius     = 32;

            Colliders.Add(cr);

            Direction = irandom(360);
            Speed     = 8;
        }
Пример #8
0
 protected virtual void StateWaitRebornUpdate()
 {
     RotateCollisionPoint();
     _waitRebornTime++;
     // 创建消弹特效
     if (_waitRebornTime == EliminateEffectTime)
     {
         ColliderCircle collider = ColliderManager.GetInstance().CreateColliderByType(eColliderType.Circle) as ColliderCircle;
         collider.SetSize(0, 0);
         collider.ScaleToSize(ElimiateEffectSize, ElimiateEffectSize, EliminateEffectDuration);
         collider.SetExistDuration(EliminateEffectDuration);
         collider.SetHitEnemyDamage(1);
         collider.SetEliminateType(eEliminateDef.PlayerDead);
         collider.SetColliderGroup(eColliderGroup.EnemyBullet | eColliderGroup.Enemy | eColliderGroup.Boss);
     }
     if (_waitRebornTime >= _waitRebornDuration)
     {
         _nextState = eCharacterState.Appear;
     }
 }
    public static bool Get(object o, TValue key, out TValue res)
    {
        ColliderCircle collider = (ColliderCircle)o;

        res = new TValue();
        if (key.TtIsString())
        {
            switch (key.SValue())
            {
                #region 基础变量
            case "x":
            {
                res.SetNValue(collider.GetPosition().x);
                return(true);
            }

            case "y":
            {
                res.SetNValue(collider.GetPosition().y);
                return(true);
            }

            case "rot":
            {
                res.SetNValue(collider.GetRotation());
                return(true);
            }

            case "dx":
            {
                res.SetNValue(collider.dx);
                return(true);
            }

            case "dy":
            {
                res.SetNValue(collider.dy);
                return(true);
            }

            case "SetPos":
            {
                res.SetClCsValue(_funcSetPos);
                return(true);
            }

            case "GetPos":
            {
                res.SetClCsValue(_funcGetPos);
                return(true);
            }

                #endregion
                #region 运动相关变量
            case "v":
            {
                res.SetNValue(collider.velocity);
                return(true);
            }

            case "vx":
            {
                res.SetNValue(collider.vx);
                return(true);
            }

            case "vy":
            {
                res.SetNValue(collider.vy);
                return(true);
            }

            case "vAngle":
            {
                res.SetNValue(collider.vAngle);
                return(true);
            }

            case "maxV":
            {
                res.SetNValue(collider.maxVelocity);
                return(true);
            }

            case "acce":
            {
                res.SetNValue(collider.acce);
                return(true);
            }

            case "accAngle":
            {
                res.SetNValue(collider.accAngle);
                return(true);
            }

                #endregion
                #region Collider类专属变量
            case "SetCollisionGroup":
            {
                res.SetClCsValue(_funcSetCollisionGroup);
                return(true);
            }

            case "SetSize":
            {
                res.SetClCsValue(_funcSetSize);
                return(true);
            }

            case "SetExistDuration":
            {
                res.SetClCsValue(_funcSetExistDuration);
                return(true);
            }

                #endregion
                #region 运动类专属方法 ISTGMovable
            case "SetV":
            {
                res.SetClCsValue(_funcSetV);
                return(true);
            }

            case "SetAcce":
            {
                res.SetClCsValue(_funcSetAcce);
                return(true);
            }

            case "SetStraightParas":
            {
                res.SetClCsValue(_funcSetStraightParas);
                return(true);
            }

            case "SetPolarParas":
            {
                res.SetClCsValue(_funcSetPolarParas);
                return(true);
            }

            case "MoveTo":
            {
                res.SetClCsValue(_funcMoveTo);
                return(true);
            }

            case "MoveTowards":
            {
                res.SetClCsValue(_funcMoveTowards);
                return(true);
            }

                #endregion
                #region IAttachable
            case "AttachTo":
            {
                res.SetClCsValue(_funcAttachTo);
                return(true);
            }

            case "SetRelativePos":
            {
                res.SetClCsValue(_funcSetRelativePos);
                return(true);
            }

                #endregion
                #region ITaskExecuter
            case "AddTask":
            {
                res.SetClCsValue(_funcAddTask);
                return(true);
            }
                #endregion
            }
        }
        res.SetSValue(string.Format("GetField from userData fail!Invalid key {0} for type {1}", key, typeof(ColliderCircle).Name));
        return(false);
    }
    public static bool Set(object o, TValue key, ref TValue value)
    {
        ColliderCircle collider = (ColliderCircle)o;

        if (key.TtIsString())
        {
            switch (key.SValue())
            {
                #region 基础变量
            case "x":
            {
                Vector2 pos = collider.GetPosition();
                pos.x = (float)value.NValue;
                collider.SetPosition(pos);
                return(true);
            }

            case "y":
            {
                Vector2 pos = collider.GetPosition();
                pos.y = (float)value.NValue;
                collider.SetPosition(pos);
                return(true);
            }

            case "rot":
            {
                collider.SetRotation((float)value.NValue);
                return(true);
            }

                #endregion
                #region 运动相关变量
            case "v":
            {
                collider.velocity = (float)value.NValue;
                return(true);
            }

            case "vx":
            {
                collider.vx = (float)value.NValue;
                return(true);
            }

            case "vy":
            {
                collider.vy = (float)value.NValue;
                return(true);
            }

            case "vAngle":
            {
                collider.vAngle = (float)value.NValue;
                return(true);
            }

            case "maxV":
            {
                collider.maxVelocity = (float)value.NValue;
                return(true);
            }

            case "acce":
            {
                collider.acce = (float)value.NValue;
                return(true);
            }

            case "accAngle":
            {
                collider.accAngle = (float)value.NValue;
                return(true);
            }
                #endregion
            }
        }
        value.SetSValue(string.Format("SetField of userData fail!Invalid key {0} for type {1}", key, typeof(ColliderCircle).Name));
        return(false);
    }