/// <summary> /// 设置ObjectCollider击中敌机的伤害 /// </summary> /// <param name="luaState"></param> /// <returns></returns> public static int SetObjectColliderHitEnemyDamage(ILuaState luaState) { ObjectColliderBase collider = luaState.ToUserData(-2) as ObjectColliderBase; int damage = luaState.ToInteger(-1); collider.SetHitEnemyDamage(damage); return(0); }
public void Init(float angle, int index) { _dmg = 35; _size = 32; _curRot = angle; _index = index; _state = 1; _totalTime = 190 - index * 10; CommandManager.GetInstance().Register(CommandConsts.PauseGame, this); CommandManager.GetInstance().Register(CommandConsts.ContinueGame, this); _collider = ColliderManager.GetInstance().CreateColliderByType(eColliderType.Circle); _collider.SetPosition(2000, 0); _collider.SetSize(_size, _size); _collider.RegisterCallback(eColliderGroup.Enemy, CollidedByEnemyCallback); _collider.SetEliminateType(eEliminateDef.PlayerSpellCard); _collider.SetColliderGroup(eColliderGroup.Enemy | eColliderGroup.EnemyBullet); _collider.SetHitEnemyDamage(_dmg); _isFinish = false; }
private void OnState2Update() { bool isInScreen = MathUtil.DetectCollisionBetweenAABBAndAABB(_curPos, _size, _size, Vector2.zero, 192, 224); if (_target == null || (_target != null && _target.GetInstanceID() != _targetInstID)) { _target = FindTarget(); if (_target != null) { _targetInstID = _target.GetInstanceID(); } } if (_target != null) { float an = MathUtil.GetAngleBetweenXAxis(_target.GetPosition() - _curPos); float a = an - _curRot; a = MathUtil.ClampAngle(a); if (a >= 180) { a -= 360; } float da = 1200f / (Vector2.Distance(_target.GetPosition(), _curPos) + 1); if (da >= Mathf.Abs(a)) { _curRot = an; } else { _curRot += da * Mathf.Sign(a); } //Logger.Log(string.Format("a={0},da={1},curRot={2}", a, da, _curRot)); } float dx = 8f * Mathf.Cos(Mathf.Deg2Rad * _curRot); float dy = 8f * Mathf.Sin(Mathf.Deg2Rad * _curRot); if (isInScreen) { if (_curPos.x > 192) { _curPos.x = 192; dx = dy = 0; } if (_curPos.x < -192) { _curPos.x = -192; dx = dy = 0; } if (_curPos.y < -224) { _curPos.y = -224; dx = dy = 0; } if (_curPos.y > 224) { _curPos.y = 224; dx = dy = 0; } } _curPos += new Vector2(dx, dy); _tf.localPosition = _curPos; if (_timer >= 230) { _dmg = _dmg * 0.4f; _size = _size * 2; _collider.SetSize(64, 64); _collider.SetHitEnemyDamage(_dmg); _state = 3; } }