Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[Director] Collision Detection probleem

Pagina: 1
Acties:
  • 345 views

  • Loev
  • Registratie: Augustus 2001
  • Laatst online: 19-10 07:34
Hallo mede-tweakers,

Ik heb een beetje hulp nodig met Director, voor school moet ik een opdracht maken. (stiekem vind ik het zelf ook wel leuk :+) Een Bully game, principe is simpel. Je bestuurt een Bully. (in mijn geval een Dobberman) Wanneer de Bully binnen een bepaalde afstand komt vluchten de andere voorwerpen. (in mijn geval basketballen). Nu gaat het vluchten
alleen moet ik er nu nog voor zorgen dat ze binnen het speelveld blijven. Ik had het briljante idee om een basketbalveld te maken, met een mooie witte omlijning.


School heeft hiervoor een voorbeeld geschreven die je zelf moet aanpassen. Alleen kom ik er niet uit. Ik verander de achtergrond, pas de kleur aan (RGB 255,255,255) waarover het voorwerp niet mag bewegen en toch gaat die uit het speelveld.

Het voorbeeld van school staat (knip)
Het volgende script wordt gebruikt:(ik heb de code op een paar plaatsen veranderd omdat ik denk dat het zo moet werken)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
--------------------------------------
--
-- Script to place on avatar sprite
--
--
--
--------------------------------------

-- reference to avatar sprite
property pSprite
-- horizontal and vertical startposition of avatar
property pintHgrid, pintVgrid
-- grid size (one block)
property pintGridSize
-- locatie van avatar tov doolhof
property ppntNow
-- referentie naar sprite met doolhof
property pSpriteMaze
-- offset van doolhof tov stage
property ppntMazeOffset
-- image object van doolhof
property pimgMaze
-- formaat van blokken van matrix
property ppntMoveStep
-- flag of avatar op dit moment aan het lopen is
property pblnMoving

on beginSprite me
  -- kijk in welke sprite karaktertje staat
  pSprite = sprite(me.spriteNum)
  
  -- afbeelding vvan doolhof in variabele opslaan
  pimgMaze = member("speelveld").image
  
  -- kijk in welke sprite doolhof afbeelding staat
  pSpriteMaze = sprite(pSpriteMaze)
  
  -- kijk waar doolhof staat op stage
  ppntMazeOffset = point(pSpriteMaze.left, pSpriteMaze.top)
  
  -- positie van sprite ten opzichte van doolhof
  ppntNow = (point(pintHgrid, pintVgrid) * pintGridSize) - point(pintGridSize/2, pintGridSize /2)
  pSprite.loc = ppntNow + ppntMazeOffset
  
  -- bepaal grootte van stappen, afhankelijk van grid-grootte
  ppntMoveStep = point(pintGridSize, pintGridSize)
  
  -- avatar staat stil
  pblnMoving = false
  
end

on prepareFrame me
  -- kijk of een van de cursor toetsen is ingedrukt
  -- deze toetsen hebben de volgende codes
  case(charToNum(the keyPressed)) of
    28: stepTo(point(-1, 0))
    29: stepTo(point(1, 0))
    30: stepTo(point(0, -1))
    31: stepTo(point(0, 1))
  end case
end

on stepTo moveDirection
  -- positioneer avatar naar door gebruiker aangegeven plek
  --
  -- kijk of er bewogen kan worden in de aangegeven richting
  if(allowMove(moveDirection)) then
    
    -- als dat mag, reken nieuwe positie uit van sprite
    -- dit is ten opzichte van linker bovenhoek van doolhof
    ppntNow = ppntNow + (ppntMoveStep * moveDirection)
    
    -- zet sprite op juiste locatie ten opzichte van de stage
    pSprite.loc = ppntNow + ppntMazeOffset
  end if
end

on allowMove moveDirection
  -- kijk of avatar mag bewegen naar aangegeven punt
  --
  -- zoek op naar welk punt speler wil dat avatar beweegt
  newPos = ppntNow + (ppntMoveStep * moveDirection)
  
  -- zoek met imaging lingo de kleur onder de pixel waar gebruiker heen wil
  if (pimgMaze.getPixel(newPos) = rgb(255, 255, 255)) then
    -- als dat wit is mag ie er niet heen
    return false
  else  
    -- anders wel...
    return true
  end if
end

on getPropertyDescriptionList me
  
  lstMazeSpriteCanditates = []
  repeat with i = 1 to the lastChannel
    if (sprite(i).member.type = #bitmap) then lstMazeSpriteCanditates.add(i)
  end repeat
  
  pList = [:]
  
  pList.addprop(#pSpriteMaze, [#format:#integer, #default: lstMazeSpriteCanditates[1], #range: lstMazeSpriteCanditates, #comment: "In welke sprite staat het doolhof?"])
  pList.addProp(#pintHgrid, [#format: #integer, #default: 1, #comment: "Op welk horizontaal gridpunt begint de avatar"])
  pList.addProp(#pintVgrid, [#format: #integer, #default: 1, #comment: "Op welk vertikaal gridpunt begint de avatar"])
  pList.addProp(#pintGridSize, [#format: #integer, #default: 1, #range: [#min: 8, #max: 128], #comment: "Hoe groot is een grid-blok (in pixels)?"])
  
  return pList
  
end


Wat doe ik fout?
Normaal vraag ik dit aan me leraar maar die ligt in het ziekenhuis voor een enkel operatie |:(

[ Voor 2% gewijzigd door F_J_K op 21-10-2017 20:57 . Reden: op verzoek van user zelf de dode verwijzing naar figuur verwijderd ]


  • _Gekkie_
  • Registratie: Oktober 2000
  • Laatst online: 24-06 20:21

_Gekkie_

And the cow said: Helloooooow?

Ik ben geen director kenner, maar rgb(255,255,255) is toch wit... ?
(regel 86)

Gekkie is a proud member of TheBenny!


  • Loev
  • Registratie: Augustus 2001
  • Laatst online: 19-10 07:34
_Gekkie_ schreef op vrijdag 27 juni 2008 @ 13:32:
Ik ben geen director kenner, maar rgb(255,255,255) is toch wit... ?
(regel 86)
Klopt en is ook de bedoeling. Ze mogen niet over de witte lijn heen. Rest van de kleuren mag wel.

Zie nu wat je bedoeld, pas het even aan :+

[ Voor 7% gewijzigd door Loev op 27-06-2008 13:36 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waarom klooien met kleuren als je de x en y positie weet en a.d.h. daarvan gewoon kunt bepalen of die binnen de rectangle valt :?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Loev
  • Registratie: Augustus 2001
  • Laatst online: 19-10 07:34
RobIII schreef op vrijdag 27 juni 2008 @ 13:39:
Waarom klooien met kleuren als je de x en y positie weet en a.d.h. daarvan gewoon kunt bepalen of die binnen de rectangle valt :?
Omdat het zo moet... kan er ook niets anders van maken...

  • Loev
  • Registratie: Augustus 2001
  • Laatst online: 19-10 07:34
*schop*

Deze klote opdracht bezorgt me echt kopzorgen. Allerlaatste opdracht en dan heb ik mijn diploma. Ben zelfs bereid iemand er voor te betalen. Weet dat het niet mag zie geen andere oplossing (leraren op vakantie &zo |:()

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:42

Creepy

Tactical Espionage Splatterer

Sorry, maar dat gaat voor GoT echt te ver. Werving is hier op het forum in z'n geheel niet toegestaan en al helemaal niet voor iets wat je zelf zou moeten kunnen maken.

[ Voor 24% gewijzigd door Creepy op 28-07-2008 17:32 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.