2011-11-28 2 views
0

저는 대학에서 컴퓨팅을위한 프로젝트를하고 있으며, 약간의 걸림돌을 쳤습니다.C#을 사용하여 스프라이트를 따르십시오.

나는 타워 방어 게임을 만들고 있는데, 나는 그림 상자 형태로 스프라이트를 만들 필요가있다. 나는 온라인과이 포럼에서 대답을 찾고자했지만, 거의 모든 사람들이 XNA를 사용하거나 다른 언어를 사용하거나 다른 코딩 언어를 사용합니다. 대학 컴퓨터를 사용해야하기 때문에 다른 것을 설치하는 것은 옵션이 아닙니다. 표준 C# 프레임 워크 여야합니다. 나는 경유지 또는 스토리 보드의 대안을 찾으려고했지만 내 검색 결과에는 아무런 성과가 없었습니다.

누구든지 나를 도울 수 있다면 매우 감사 할 것입니다.
감사

+4

비트 맵을 WinForms에 배치하는 방법을 이미 알고 있다면 XNA 샘플에서 경로 부분을 따라 이동할 수 있어야합니다. 예 : 이 질문을 참조하십시오 http://stackoverflow.com/questions/3273396/animate-sprite-along-a-curve-path-in-xna –

+0

그는 XNA를 사용하지 않고 있습니다. 그는 "찾은 모든 사람"이라고 인용했습니다. 즉, "올바른"대답은 타이머 컨트롤과 관련이 있고, 한 웨이 포인트에서 다음 웨이 포인트까지를 의미 할 수도 있습니다. =) – Dracorat

답변

0

좀 더 세부 사항을 기입하지만 난 그냥 개요를 제공 할 것 같아요 숙제 방법으로 보는 것은 :

PictureBox pbox1 = new PictureBox(); 
    Point[] path = { new Point(10,100), new Point(150, 60), new Point(100, 120)}; 
    Timer timer1 = new Timer(); 
    int curPointIndex = 0; 
    int nextPointIndex = 1; 
    float percent = 0f; 
    float pctIncrement = 1f; 

    public Form1() 
    { 
    InitializeComponent(); 

    pbox1.Location = path[0]; 
    pbox1.Size = new Size(32, 32); 
    pbox1.BackColor = Color.Red; 

    timer1.Interval = 20; 
    timer1.Tick += new EventHandler(timer1_Tick); 
    timer1.Start(); 

    this.Controls.Add(pbox1); 
    this.components.Add(timer1); 
    } 

    void timer1_Tick(object sender, EventArgs e) 
    { 
    percent += pctIncrement; 
    // Calculate weighted average based on point number 
    // curPointIndex and nextPointIndex in path here. 

    // Set pbox1.Location to calculated position here. 

    // Check for altering curPointIndex and nextPointIndex here when percent 
    // reaches 100 (and reset percent) here. 
    } 

내 테스트 프로젝트에서 코드를 작성하고 그것을 작동합니다. 한 가지주의해야 할 점은 Sprite는 멀리 떨어져있는 점 사이에서 더 느리게 이동한다는 점입니다. 그러나 점이 그것이 요구 사항에 문제가되는지 확실하지 않습니다. 그럴 경우 pctIncrement를 현재 점과 다음 점 사이의 거리에 반비례하는 계산으로 변경할 수 있습니다.

0

이미 하나의 답변을 추가했지만 완전히 다른 답변도 있습니다. 제 3 자 프레임 워크를 사용하고 싶지 않다고 말하면, 이것이 라인을 넘는 지 아닌지 확실하지 않습니다. Scrolling Game Development Kit 2을 사용하면 스프라이트에 대한 맵과 스프라이트 및 경로를 정의 할 수 있지만 Visual C# Express에로드하고 독립적으로 컴파일 할 수있는 완전히 독립형 프로젝트를 생성합니다. 그것이 의존하는 하나의 라이브러리는 그래픽 그리기를 처리하기 위해 OpenGL에 액세스하기위한 OpenTK입니다. 이 부분은 선을 넘을 수도 있지만 대부분 Display.cs에 캡슐화 된 그림 용입니다. 스프라이트 나지도 또는 움직임의 상태를 관리하는 것이 아닙니다.

관련 문제