from manim import *
class TrumpZelenskyCartoon(Scene):
def construct(self):
# 场景1:农场办公室
oval_office = RoundedRectangle(fill_color=GOLD_E, fill_opacity=1).scale(2)
trump = SVGMobject("lion.svg").set_color("#FF6B45").scale(0.8)
zelensky = Group(UkraineFlag(), Circle(fill_color=YELLOW)).arrange(DOWN)
# 货币符号动画
dollar_sign = Text("$$$").shift(UP*2)
self.play(DrawBorderThenFill(oval_office),
GrowFromCenter(trump),
FadeIn(zelensky))
# 电话手势哑剧
phone_gesture = AnimationGroup(
trump.animate.rotate(20).shift(LEFT),
zelensky.animate.rotate(-30).shift(RIGHT),
run_time=3
)
self.play(phone_gesture)
# 爆米花雨特效
popcorn = VGroup(*[Star().scale(0.2) for _ in range(50)])
popcorn_rain = AnimationGroup(
*[ApplyMethod(p.shift, DOWN*3+np.random.uniform(-1,1)*RIGHT)
for p in popcorn],
lag_ratio=0.1
)
self.add(popcorn)
self.play(popcorn_rain)
# 北约标志吹纸比赛
nato_symbol = Text("NATO").scale(0.3)
straws = VGroup(Line(UP, DOWN), Line(UP, DOWN))
self.play(
nato_symbol.animate.next_to(straws[0], UP),
Create(straws)
)
# 片尾彩蛋
twitter_logo = ImageMobject("twitter.png").scale(0.5)
self.play(
SpinIn(twitter_logo),
Flash(twitter_logo)
)
self.wait(2)