[英]make speed 5 when shift key is pressed
我有以下代碼來使播放器移動:
class Player {
PVector direction;
PVector location;
float rotation;
int speed;
Player() {
location = new PVector(width/2, height/2);
speed =2;
}
void visualPlayer() {
direction = new PVector(mouseX, mouseY);
rotation = atan2(direction.y - location.y, direction.x - location.x)/ PI * 180;
if (keyPressed) {
if ((key == 'w' && dist(location.x, location.y, direction.x, direction.y)>5) || (key == 'w' && key == SHIFT && dist(location.x, location.y, direction.x, direction.y)>5)) {
speed = 2;
location.x = location.x + cos(rotation/180*PI)*speed;
location.y = location.y + sin(rotation/180*PI)*speed;
if (key == SHIFT) {
speed = 5;
}
}
} else {
location.x = location.x;
location.y = location.y;
}
println(speed);
ellipse(location.x, location.y, 10, 10);
}
}
當我按下w鍵時,播放器會朝着鼠標的方向移動。 但是如果要按Shift鍵,我想讓播放器移動得更快。 但是現在當我按下Shift鍵時,我的播放器停止移動了...為什么會發生這種情況? 歡迎任何幫助我解決此問題的建議:)
這兩個if
語句永遠不會都是真的:
if ((key == 'w' ) {
if (key == SHIFT) {
在調用draw()
函數期間, key
變量將只有一個值。
實際上, key
變量永遠不會包含SHIFT
的值。 相反,您需要使用keyCode
變量。
而且,由於您要檢測多個按鍵,因此您需要執行我在另一個問題中告訴您的操作:您需要使用一組boolean
值來跟蹤按下的鍵,然后在您的鍵盤中使用它們。 draw()
函數。
這是一個小例子,可以准確顯示我在說什么:
boolean wPressed = false;
boolean shiftPressed = false;
void draw() {
background(0);
if (wPressed && shiftPressed) {
background(255);
}
}
void keyPressed(){
if(key == 'w' || key == 'W'){
wPressed = true;
}
if(keyCode == SHIFT){
shiftPressed = true;
}
}
void keyReleased(){
if(key == 'w' || key == 'W'){
wPressed = false;
}
if(keyCode == SHIFT){
shiftPressed = false;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.