so I'm making a videogame

조회 수: 1 (최근 30일)
Stephen
Stephen 2012년 5월 24일
I have a vector of enemy handles so that I can assign visibility to certain enemies and not others, but once I update all of their positions (xdata and ydata), the visibility gets messed up and all become visible in the entire map. Anyone know why? I tried to use get(e,'visible') but it returns a cell of 'on' or 'off' that sucks to feed into set

답변 (3개)

Stephen
Stephen 2012년 5월 24일
y=get(h,'ydata');
x=get(h,'xdata');
hy = hypot(ye-y,xe-x)<8;
set(e(hy),'visible','on')
this gets the player position and makes certain enemies visible
xs=sign(xe-x)*randint;
ys=sign(ye-y)*randint;
hy = hypot(ye-y,xe-x)<6;
hy = logical(hy.*(loc==zones(y,x)));
xe(hy)=xe(hy)-xs(hy);
ye(hy)=ye(hy)-ys(hy);
set(e,'xdata',xe,'ydata',ye)
This updates the enemies position and ruins everything

Matt Kindig
Matt Kindig 2012년 5월 24일
Do you have any calls to 'drawnow'? I don't think that simply changing the xdata/ydata is supposed to change handle visibility. Some other commands, such as 'figure', 'pause', and others automatically call drawnow.
One way you could quickly set all visibilities is to pass in a vector of handles to the set command. Something like:
set( HandlesOfHiddenObjects, 'Visible', 'off');
set( HandlesOfVisibleObjects, 'Visible', 'on');
  댓글 수: 2
Walter Roberson
Walter Roberson 2012년 5월 24일
drawnow() should not affect the visibility of anything.
Stephen
Stephen 2012년 5월 24일
I have drawnow in the main while loop of the game

댓글을 달려면 로그인하십시오.


Walter Roberson
Walter Roberson 2012년 5월 24일
You cannot set the visibility of individual points in a line object. Your visibility with that code is going to be set according to the last value that happens to be in the array.
  댓글 수: 2
Stephen
Stephen 2012년 5월 24일
it isn't one line object, but several single point objects whose handles I packed into a single vector, e. I'll try some different syntax
Stephen
Stephen 2012년 5월 24일
also, the visibility line works, it's just that once I update the positions it resets all visibilities

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Graphics Performance에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by