[AS3] Gedeelte van Cirkel maken

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • P-Storm
  • Registratie: September 2006
  • Laatst online: 23:32
Momenteel zit ik vast met een probleem, en weet niet hoe ik dit makkelijk kan oplossen. Daarom vraag ik jullie hulp! Normaal programmeer ik in vb .net, dus het kan zijn dat ik sommige functies/codes niet herken/begrijp.

Het probleem

Een lamp die tegen een muur schijnt, houdt het licht tegen. Er wordt tijdens het spelen een lamp neergezet, en de schaduw bij genereren. Aangezien een plaatje meer zegt dan woorden:

Afbeeldingslocatie: http://img683.imageshack.us/img683/5407/oplossing.jpg
Wit = transpirante achtergrond
Geel = Het licht dat een lamp uitstraalt.
Rood = Wat weggehaald moet worden.
Zwart = Muren

Het moet een cirkel zijn ivm het doorrekenen van collision.

Wat ik heb geprobeerd

• Oval tool, alleen kan niet de code vinden voor een gedeelte van een cirkel


• Graphics met .moveTo en .lineTo, en deze in een loop gooien voor een cirkel, met de punten berekend door sin en cos.
Dit is te intensief voor het spel zelf.


• De .curveTo methode?
Flash ActionScript 3:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var mc:MovieClip = new MovieClip();
mc.graphics.beginFill(0x000FF0);
            
var xm:Number = 250;
var ym:Number = 150;
var r:Number = 100;
            
var x1:Number = xm-r;
var x2:Number = xm+r;
var x12:Number = xm;
var y1:Number = ym-r;
var y2:Number = ym+r;
var y12:Number = ym; 
            
mc.graphics.moveTo(x1, y12);
mc.graphics.curveTo(x1, y1,x12 ,y1);
mc.graphics.curveTo(x2, y1,x2,y12);
mc.graphics.curveTo(x2, y2,x12,y2);
mc.graphics.curveTo(x1, y2,x1,y12);
            
mc.graphics.endFill();

addChild(mc);
Rommelige code, kan nog wel wat opruimen.
Hieruit krijg je:
Afbeeldingslocatie: http://img693.imageshack.us/img693/849/curveto.jpg
Zoals je kan zien is de blauwe, bollige cirkel, die met curveTo gemaakt is
De groene is een ronde cirkel die even groot hoort te zijn.

De oplossing

Als ik een oplossing heb gevonden, zal dat hier komen te staan. ;)


offtopic:
Wel jammer dat er geen as3 ondersteuning is, en paint skills FTW :z !

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

Wit = transpirante achtergrond
Een zwetende achtergrond? :D

Ik ben niet zo bekend met actionscript, maar is het niet mogelijk om een boolean AND te tekenen van verschillende figuren?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • P-Storm
  • Registratie: September 2006
  • Laatst online: 23:32
Naar mijn weten heb je wel een mask optie, en kun je meerder dingen over elkaar te tekenen, echter wil ik juist dat de rode stukken verwijderd zijn. Dit omdat er meerdere lampen neergezet kunnen worden.

offtopic:
Paint skills, uit gebrek aan beter op mijn laptop :+

Acties:
  • 0 Henk 'm!

  • boe2
  • Registratie: November 2002
  • Niet online

boe2

'-')/

Is het dan niet eenvoudiger om rechthoeken te maken van wat de schaduw moet voorstellen en dan een eenvoudige intersect te doen? Het lijkt me erg omslachtig om de cirkel zelf te proberen vervormen.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind.' - Pratchett.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

P-Storm schreef op woensdag 18 november 2009 @ 13:52:
Naar mijn weten heb je wel een mask optie, en kun je meerder dingen over elkaar te tekenen, echter wil ik juist dat de rode stukken verwijderd zijn. Dit omdat er meerdere lampen neergezet kunnen worden.
En dus maskeer je daar waar de schaduwen zitten eruit, dat was mijn punt :)
Boeboe schreef op woensdag 18 november 2009 @ 13:56:
Is het dan niet eenvoudiger om rechthoeken trapeziums te maken van wat de schaduw moet voorstellen en dan een eenvoudige intersect te doen?
Idd, dat komt op hetzelfde neer.

[ Voor 27% gewijzigd door .oisyn op 18-11-2009 13:59 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • P-Storm
  • Registratie: September 2006
  • Laatst online: 23:32
Het probleem met een mask gebruiken is dat ik wel de schaduwen kan berekenen, maar ik heb juist het complement nodig. En dit weet ik niet hoe ik die kan krijgen.

Mijn idee was ook om met een trapeziums de schaduwen te maken.

[ Voor 17% gewijzigd door P-Storm op 18-11-2009 14:12 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

Is er geen mogelijkheid om overal te tekenen waar je juist niet gemaskeerd hebt? Of idd om de mask te inverten?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • P-Storm
  • Registratie: September 2006
  • Laatst online: 23:32
Heb nog gekeken of een mask een andere kleur kan geven (nu is transpirant wat wegvalt), misschien kan ik een andere kleur gebruiken en zo toch de inverse mask pakken. Heb tot nu toe nog geen mask invert gevonden, en ben nu bezig een script in elkaar te draaien om alles te maskeren behalve de schaduwen, al is dat wat lastiger om een werkende prototype te maken.
Pagina: 1