public void update(float dt, double update_time, ref MyTransform parent_transform) { if (MyCollider.getHitOpponentForEnemy(collider_) != MyCollider.Type.None) { rigidbody_.addTorque(MyRandom.Range(-20f, 20f), MyRandom.Range(-20f, 20f), MyRandom.Range(-20f, 20f)); } if (lock_target_.isHitted()) { rigidbody_.addTorque(MyRandom.Range(-200f, 200f), MyRandom.Range(-200f, 200f), MyRandom.Range(-200f, 200f)); lock_target_.clearLock(); Explosion.Instance.spawn(ref lock_target_.updated_position_, update_time); Hahen.Instance.spawn(ref lock_target_.updated_position_, update_time); Shockwave.Instance.spawn(ref lock_target_.updated_position_, update_time); SystemManager.Instance.registSound(DrawBuffer.SE.Explosion); } rigidbody_.addSpringTorque(ref parent_transform.rotation_, 30f /* torque_level */); var pos = parent_transform.transformPosition(ref locator_); rigidbody_.transform_.position_ = pos; rigidbody_.update(dt); MyCollider.updateEnemy(collider_, ref rigidbody_.transform_.position_); lock_target_.update(); }
public void reset(ref MyTransform parent_transform) { var pos = parent_transform.transformPosition(ref locator_); rigidbody_.transform_.position_ = pos; rigidbody_.transform_.rotation_ = parent_transform.rotation_; rigidbody_.velocity_ = CV.Vector3Zero; rigidbody_.r_velocity_ = CV.Vector3Zero; }
public void renderUpdate(int front, ref MyTransform transform, ref Vector3 offset) { { var pos = transform.transformPosition(ref offset); Beam.Instance.renderUpdate(front, beam_id_, ref pos, ref pos); } for (var i = 0; i < beam_id_list_.Length; ++i) { var dir0 = offset + normal_list_[i] * phase_list_[i] * 2f; var pos0 = transform.transformPosition(ref dir0); var dir1 = offset + normal_list_[i] * (phase_list_[i] + 0.1f) * 2f; var pos1 = transform.transformPosition(ref dir1); Beam.Instance.renderUpdate(front, beam_id_list_[i], ref pos0, ref pos1); } }