This site requires JavaScript, please enable it in your browser!
Greenfoot back
gfsdhjjks
gfsdhjjks wrote ...

2021/3/15

Object should rotate withouth the image

gfsdhjjks gfsdhjjks

2021/3/15

#
So in my project the Ghost will be rotated at some point but on the given points their image shouldn't rotate.
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
import greenfoot.*;
public class ghost extends Actor
{
    public ghost()
    {
        getImage().scale(getImage().getWidth() / 2 , getImage().getHeight() / 2 );
    }
    public void act()
    {
        moveAround();
    }
       public boolean hitWall()
    {
        if (isTouching (walls.class))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    public void moveAround()
    {
        move(2);
        if(getX() == 1216 && getY() == 184 || getX() == 978 && getY() == 104 || getX() == 770 && getY() == 608 || getX() == 628 && getY() == 702 || getX() == 872 && getY() == 56 || getX() == 506 && getY() == 624 || getX() == 874 && getY() == 504 || getX() == 528 && getY() == 226 || getX() == 424 && getY() == 416 || getX() == 320 && getY() == 56) //links,unten
        {
            if (Greenfoot.getRandomNumber(2) == 1)
            {
                setRotation(180);
                getImage().rotate(0);
            }
            else
            {
                setRotation(90);
                getImage().rotate(0);
            }
        }      
        if(getX() == 972 && getY() == 546 || getX() == 972 && getY() == 288 || getX() == 768 && getY() == 56 || getX() == 746 && getY() == 226 || getX() == 424 && getY() == 226 || getX() == 136 && getY() == 56 || getX() == 136 && getY() == 568) //rechts, unten
        {
            if (Greenfoot.getRandomNumber(2) == 1)
            {
                setRotation(90);
                getImage().rotate(0);
            }
            else
            {
                setRotation(0);
            }
        }
        if(getX() == 1216 && getY() == 546 || getX() == 972 && getY() == 624 || getX() == 874 && getY() == 674 || getX() == 768 && getY() == 120 || getX() == 872 && getY() == 226 || getX() == 320 && getY() == 672 || getX() == 528 && getY() == 504 || getX() == 424 && getY() == 312 || getX() == 320 && getY() == 672) //links, oben
        {
            if (Greenfoot.getRandomNumber(2) == 1)
            {
                setRotation(270);
                getImage().rotate(0);
            }
            else
            {
                setRotation(180);
                getImage().rotate(0);
            }
        }
        if(getX() == 978 && getY() == 184 || getX() == 972 && getY() == 440 || getX() == 628 && getY() == 674 || getX() == 770 && getY() == 674 || getX() == 746 && getY() == 504|| getX() == 424 && getY() == 504 || getX() == 136 && getY() == 160 || getX() == 136 && getY() == 672) //rechts, oben
        {
            if (Greenfoot.getRandomNumber(2) == 1)
            {
                setRotation(270);
                getImage().rotate(0);
            }
            else
            {
                setRotation(0);
            }
        }
        if(getX() == 872 && getY() == 104 || getX() == 874 && getY() == 624  || getX()== 746 && getY() == 360 || getX()== 320 && getY() == 608 || getX()== 528 && getY() == 472 || getX()== 528 && getY()  == 256 || getX() == 320 && getY() == 416 || getX() == 320 && getY() == 120 || getX() == 320 && getY() == 312) //rechts, oben, unten
        {
            if (Greenfoot.getRandomNumber(3) == 1)
            {
                setRotation(270);
                getImage().rotate(0);
            }
            else if (Greenfoot.getRandomNumber(3) == 2)
            {
                setRotation(0);
            }
            else
            {
                setRotation(90);
                getImage().rotate(0);
            }
        }
        if(getX() == 1216 && getY() == 288 || getX() == 1216 && getY() == 440 || getX() == 972 && getY() == 360 || getX() == 746 && getY() == 472 || getX() == 746 && getY() == 256 || getX() == 320 && getY() == 160 || getX() == 320 && getY() == 568) //links, oben, unten
        {
            if (Greenfoot.getRandomNumber(3) == 1)
            {
                setRotation(270);
                getImage().rotate(0);
            }
            else if (Greenfoot.getRandomNumber(3) == 2)
            {
                setRotation(180);
                getImage().rotate(0);
            }
            else
            {
                setRotation(90);
                getImage().rotate(0);
            }
        }
        if(getX() == 632 && getY() == 608 || getX() == 632 && getY() == 256) //links, rechts, oben
        {
            if (Greenfoot.getRandomNumber(3) == 1)
            {
                setRotation(270);
                getImage().rotate(0);
            }
            else if (Greenfoot.getRandomNumber(3) == 2)
            {
                setRotation(180);
                getImage().rotate(0);
            }
            else
            {
                setRotation(0);
            }
        }
        if(getX() == 632 && getY() == 472 || getX() == 632 && getY() == 120) //links, rechts, unten
        {
            if (Greenfoot.getRandomNumber(3) == 1)
            {
                setRotation(90);
                getImage().rotate(0);
            }
            else if (Greenfoot.getRandomNumber(3) == 2)
            {
                setRotation(180);
                getImage().rotate(0);
            }
            else
            {
                setRotation(0);
            }
        }
    }
}
gfsdhjjks gfsdhjjks

2021/3/15

#
Just ignore the getImage().rotate it didnt worked. For example I tried to use on setRotation(90) the line getImage().rotate(-90).
danpost danpost

2021/3/15

#
Remove all:
1
getImage().rotate(0);
For one thing, saying to rotate zero degrees is a non-operational command. Secondly, it is not required to rotate the image. You want the movement to rotate, not the actor. At least, that is what I believe you want. Add a field to track the rotation you would think the actor would have at any time. Set that rotation to the actor at beginning of moveAround and set back to zero at end of the method. There may be another issue with your random values and how they control the direction. The else parts are more likely to happen than the other parts (just saying).
gfsdhjjks gfsdhjjks

2021/3/16

#
How do i track the rotation? thanks for your relpy
danpost danpost

2021/3/16

#
gfsdhjjks wrote...
How do i track the rotation?
1
2
3
4
5
6
7
8
9
10
int rotation;
 
public void act()
{
    setRotation(rotation);
    ...
    ...
    rotation = getRotation();
    setRotation(0);
}
gfsdhjjks gfsdhjjks

2021/3/17

#
danpost wrote...
gfsdhjjks wrote...
How do i track the rotation?
1
2
3
4
5
6
7
8
9
10
int rotation;
 
public void act()
{
    setRotation(rotation);
    ...
    ...
    rotation = getRotation();
    setRotation(0);
}
If I use that somehow my ghost wont rotate anymore at the given points... Eventhough I used getImage().rotate instead of set Rotation.
danpost danpost

2021/3/17

#
gfsdhjjks wrote...
somehow my ghost wont rotate anymore at the given points... Eventhough I used getImage().rotate instead of set Rotation.
Do NOT rotate the image. Maybe I misunderstood what you were trying to do. Please explain, in detail, what behavior you are trying to achieve.
You need to login to post a reply.