diff options
| author | Raymond Hogenson <rayhogenson@openmailbox.org> | 2016-10-16 14:35:05 -0400 |
|---|---|---|
| committer | Raymond Hogenson <rayhogenson@openmailbox.org> | 2016-10-16 14:35:05 -0400 |
| commit | e717c90bbdc3089f64c943afb98f44df031cab18 (patch) | |
| tree | 08fd5da428853f4571a0ab9ac2d7628c249551af /fish_types.py | |
| parent | Create new sorts of fish to be displayed (diff) | |
| download | bridge-e717c90bbdc3089f64c943afb98f44df031cab18.tar.zst | |
Improve eel movement
Diffstat (limited to 'fish_types.py')
| -rw-r--r-- | fish_types.py | 47 |
1 files changed, 41 insertions, 6 deletions
diff --git a/fish_types.py b/fish_types.py index 63e082e..73b58c1 100644 --- a/fish_types.py +++ b/fish_types.py @@ -25,6 +25,8 @@ class Fish(object): self.tailAcceleration = C.Vector(self.tailAccelMag, 0) self.tailMoving = False self.tailMoveCount = 0 + if not hasattr(self, 'theta_scale'): + self.theta_scale = 12 @classmethod def by_type(cls, fish_type): @@ -71,14 +73,14 @@ class Fish(object): def fix_direction(self): min_theta = -0.32 max_theta = 0.32 - if self.y < 0: + if self.y + self.height < 0: min_theta = 0 - if self.y > 1: + if self.y > 2: max_theta = 0 #theta = rand_in_range(min_theta, max_theta) theta = random.gauss( - (max_theta+min_theta)/2, (max_theta - min_theta)/12 + (max_theta+min_theta)/2, (max_theta - min_theta)/self.theta_scale ) self.tailAcceleration = C.Vector(self.tailAccelMag, 0).rot2d(theta) @@ -86,6 +88,12 @@ class Fish(object): """May be overridden to provide multicolored fish.""" return self.color + def alpha_at(self, x, y): + """Return an additional scale amount for clear parts. + + This is overridden to have oddly shaped fish, such as the eel.""" + return 1 + class Jellyfish(Fish): color = C.HSV(298/360, 89/100, 53/100).to_RGB() @@ -174,6 +182,9 @@ class Whale(Fish): tailThreshold = 0.7 tailDuration = 3 tailAccelMag = 0.4 + theta_scale = 20 + + y = 0 white_x_min = 30 white_x_width = 8 @@ -210,11 +221,34 @@ class Stingray(Fish): class Eel(Fish): color = C.HSV(109/360, 83/100, 35/100).to_RGB() drag = -0.09 - width = 23 - height = 1.5 + width = 50 + height = 2 tailThreshold = 0.7 tailDuration = 2 - tailAccelMag = 0.4 + tailAccelMag = 0.1 + + front_offset = 0 + y = 0 + + def alpha_at(self, x, y): + rel_x = x - self.x + rel_y = y - self.y + eel_height = math.sin( + 2 * math.pi * (rel_x + self.front_offset) / self.width + ) / 2 + 0.5 + y_blend = abs(rel_y - eel_height) + if y_blend > 0.5: + return 0 + return (1 - y_blend) + + def update(self): + self.front_offset += abs(self.speed) + if self.front_offset > self.width: + self.front_offset = 0 + return super(Eel, self).update() + + def fix_direction(self): + pass class Shark(Fish): @@ -225,6 +259,7 @@ class Shark(Fish): tailThreshold = 0.7 tailDuration = 3 tailAccelMag = 0.4 + theta_scale = 20 def rand_in_range(low, high): |
