Sklep

» Detekcja kolizji (tutoriale Actionscript dla początkujących)
Kontakt | 
Detekcja kolizji (tutoriale Actionscript dla początkujących)

Opis

Ten tutorial krok po kroku, budowany na poprzednich, demonstruje rożne metody detekcji kolizji. Dwie metody  isNearTarget() i isNearThis() dostarczają środków do detekcji bliskości między dwoma obiektami.

 

Cel

Ten samouczek przedstawia metody isNearTarget() i isNearThis() .

 

plik .swi

"Kolizja.swi"

 

1. Kontynuuj od poprzedniego tutoriala lub otwórz z sieci plik  plik "zrzucenie_obiektu.swi". Zapisz plik jako "Kolizja.swi"

 

2. Wybierz niebieską piłkę (ball2) w panelu 'Konspekt'. Usuń istniejące akcje ze zdarzenia onSelfEvent (enterFrame) i następnie wstaw warunek if (isNearThis()).

 

 

http://www.swish.pl/tutoriale/help/actionscript-dla-poczatkujacych-gen/scripttute9_1

Wybierz z rozwijanej listy _parent.ball (_parent.ball jest inną piłką) i wybierz opcję 'Ramki obiektów' 

 

http://www.swish.pl/tutoriale/help/actionscript-dla-poczatkujacych-gen/scripttute9_2

 

Nota: Jako, że ball i ball2 są obiektami zawartymi w głównym filmie, ball może być uzyskiwany poprzez "_root.ball" lub "_parent .ball" z obiektu ball2

 

3. Dokończ skrypt zdarzenia onSelfEvent (enterFrame):

 

onSelfEvent (enterFrame)

{

 if (_parent.ball.isNearThis()) {

   _alpha = 50;

 } else {

   _alpha = 100;

 }

}

 

 

Ten skrypt zmieni _alpha (przezroczystość) obiektu ball2 do 50%,  gdy będzie blisko obiektu ball

 

4. Powróć do panelu 'Obszar roboczy' i wciśnij przycisk 'Odtwarzaj'. Ciągnij niebieską kulkę blisko czerwonej z rożnych kierunków, sprawdzając kiedy niebieska kulka staje się półprzezroczysta.

 

W przykładzie niżej, kulki nie są postrzegane jako bliskie ('Near').

http://www.swish.pl/tutoriale/help/actionscript-dla-poczatkujacych-gen/scripttute9_3

 

Piłki są blisko ('Near') na obrazku niżej. Co się objawia tym, że niebieska piła (ball2) staje się półprzezroczysta (_alpha = 50%).

http://www.swish.pl/tutoriale/help/actionscript-dla-poczatkujacych-gen/scripttute9_4

 

Nota:

· Piłki są bliskie ('Near'), nawet gdy nie nakładają się, wystarczy, że ich ramki się nakładają, w tym przypadku definicja 'Near' jest określona na 'Ramki obiektów' .
· Zauważ, że ciągnięcie czerwonej kulki w kierunku niebieskiej ma ten sam efekt

 

 

5. Wciśnij 'Stop' i powróć do panelu 'Skrypt'. Wybierz opcję "Odległość X, Y" dla akcji if (isNearThis()) i wprowadź wartość 60 dla X i 20 dla Y.

 

    http://www.swish.pl/tutoriale/help/actionscript-dla-poczatkujacych-gen/scripttute9_4a

 

Kod "if (isNearThis())" będzie teraz wyglądał następująco:

 

if (_parent.ball.isNearThis(60,20)) {

 

Wciśnij 'Odtwarzaj' by uzyskać podgląd.

 

 

6. Wciśnij 'Stop' i powróć do panelu 'Skrypt'. Wybierz opcję 'Odległość między' dla kodu if (isNearThis()). Wprowadź odstęp, który jest sumą promieni piłek. W  tym przykładzie:

 

Ball ma szerokość 40 (promień = 20)

Ball2 ma szerokość 40 (promień = 20)

Odstęp 20 + 20 = 40.

 

Kod "if (isNearThis())" powinien wyglądać, jak niżej:

 

if (_parent.ball.isNearThis(40)) {

 

Wciśnij 'Odtwarzaj' i zauważ, że niebieska kulka zmienia przezroczystość, gdy kulki się dotykają lub nakładają.

 

7. Wciśnij przycisk 'Stop' i powróć do panelu 'Skrypt'. Wybierz w panelu 'Konspekt' i dodaj następujący skrypt:

 

onSelfEvent (enterFrame)

{

 if (isNearTarget(_root.ball2._target)) {

   _alpha = 50;

 } else {

   _alpha = 100;

 }

}

 

By wprowadzić funkcję isNearTarget(), kliknij prawym klawiszem myszy i wybierz akcję z menu

 

http://www.swish.pl/tutoriale/help/actionscript-dla-poczatkujacych-gen/scripttute9_6

 

Teraz wprowadź  _root.ball2._target w pole  Inne: , w subpanelu asysty.

 

8. Wciśnij przycisk 'Odtwarzaj' i zauważ, że niebieska kulka zmienia rozdzielczość, gdy piłki dotykają się lub nakładają. Zauważ, że czerwona kulka zmienia przezroczystość, gdy  ramki obiektów nakładają się.

 

http://www.swish.pl/tutoriale/help/actionscript-dla-poczatkujacych-gen/scripttute9_7

 

Polecenie "if (_root.ball2.isNearThis()) {" będzie miało taki sam efekt

 

9. Zmień polecenie na:

 

if (isNearTarget(_root.ball2._target, 60, 20)) {

 

wciśnij 'Odtwarzaj' i obserwuj

 

Nota: To zachowanie jest identyczne do :

 

if (_root.ball2.isNearThis(60,20)) {

 

 

10. Zmień polecenie na :

 

if (isNearTarget(_root.ball2._target, 40)) {

 

wciśnij 'Odtwarzaj' i obserwuj. Obydwie kulki zmieniają przezroczystość, gdy się dotykają.

 

Nota: Zachowanie identyczne z:

 

if (_root.ball2.isNearThis(40)) {

 

Analiza

Metody isNearTarget() i isNearThis() dostarczają identycznej funkcjonalności używając innych parametrów. Obydwie metody pozwalają sprawdzić bliskość zdefiniowaną poprzez:

 

· ramki obiektów  (isNearTarget(target) lub target.isNearThis())
· narzucony rozmiar prostokąta (isNearTarget(target, X, Y) lub target.isNearThis(X, Y))
· odległość pomiędzy centrami obiektów (isNearTarget(target, D) lub target.isNearThis(D)).

 

W przeciwieństwie do właściwości _target i _droptarget omawianych w poprzednim samouczku, warunek 'Near' nie jest sprawdzany, gdy obiekt jest ciągnięty.

Powiązane tematy: Flash,Actionscript dla początkujących Kontynuuj
  piątek, 25 kwiecień 2025  
  83339959 wywołań  
(c) Copyright by Dreamsoft 2015. Wszelkie prawa do publikowanej treści zastrzeżone. Nasz sklep wykorzystuje pliki Cookies do sprzedaży oprogramowania: polityka prywatności