Киви - фруктовый ниндзя с эффектом лезвия - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь создать эффекты CCBlade, подобные фруктовым ниндзя, для моей игры, и поэтому пытаюсь очистить хвост холста, чтобы он выглядел как лезвие фруктового ниндзя, но я понятия не имею, как это сделать.Вот код

from random import random
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Color, Line


class Blade(Widget):

    def on_touch_down(self, touch):
        color = (random(), 1, 1)
        with self.canvas:
            Color(*color, mode='hsv')
            touch.ud['line'] = Line(points=(touch.x, touch.y), pointsize=5)
    def on_touch_up(self, *touch):
        self.canvas.clear()
    def on_touch_move(self, touch):
        touch.ud['line'].points += [touch.x, touch.y]

        self.clearTail(touch)
    def clearTail(self, touch):
        #How can i clear the tail of the canvas as i move my finger
        #so that the line looks like it continuesly follows my finger
        #I want the lenght of the line to be about 5cm or a bit long
        #And no matter how long i move my finger 
        #the line must follows it and must not exceed 5cm or a bit longer (maybe 7cm - 15cm)
        #AM TRYING TO ARCHIEVE CCBLADE EFFECT LIKE THAT OF FRUIT NINJA
        pass
class BladeApp(App):

    def build(self):
        parent = Widget()
        self.bldEfx = Blade()
        parent.add_widget(self.bldEfx)
        return parent


if __name__ == '__main__':
    BladeApp().run()

Как я могу очистить хвост холста, когда я двигаю пальцем так, чтобы линия выглядела так, будто она продолжает следовать за моим пальцем.Это должно выглядеть как фруктовый эффект ниндзя Blade.Есть ли какой-нибудь другой способ, которым я могу достичь эффекта лезвия ниндзя на киви?

1 Ответ

0 голосов
/ 27 сентября 2018

Вы можете попробовать что-то вроде:

def clearTail(self, touch)
    touch.ud['line'].points = touch.ud['line'].points[-10:]

Это ограничивает линию последними пятью точками линии (две координаты на точку).

...