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; } }
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; }
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" }; }
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); }
/// <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); }
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; }
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); }