我的程序检测到图像与屏幕边缘之间的碰撞,但我无法在碰撞后拖动图像。我有什么改变,所以我仍然可以拖动图像并且不让图像超出屏幕边缘?
我做的Gif示例:https://s31.postimg.org/f60hh3z2z/Animation.gif
内部渲染
private boolean isNotColliding(){
return screenBounds.contains(textureBounds);
}
"use strict";
const net = require('net');
const TelnetInput = require('telnet-stream').TelnetInput;
const TelnetOutput = require('telnet-stream').TelnetOutput;
let socket = net.createConnection(6555, '198.178.123.109', function() {
let input = new TelnetInput();
let output = new TelnetOutput();
//socket.pipe(input).pipe(process.stdout);
process.stdin.pipe(output).pipe(socket);
socket.pipe(input).on('data', function(chunk) {
chunk = chunk.toString() + 'end';
let split = chunk.match(/[^\r\n]+/g);
split.forEach(function(line) {
if (line.match(/end/) == null) {
line = line + ">--\n\r";
} else {
line = line.replace('end', '');
}
process.stdout.write(line);
});
});
input.on('will', function(option) {
if (option == 201) {
output.writeDo(201);
var support = new Buffer(1);
support.write('Core.Supports.Set [ "Room 1", "Char 1", "Comm 1", "Group 1" ]', 0);
output.writeSub(201, support);
}
});
input.on('sub', function(option, buffer) {
// console.log(option);
// console.log(buffer.toString());
});
});
答案 0 :(得分:1)
精灵的位置是左下角。这个位置用于检查精灵是否与边缘碰撞。
因为你可以在一个帧中移动精灵超过1个像素,所以你可以将精灵x位置设为负数。如果spritePosition.x == -1,您将能够看到精灵,但第一行像素将位于屏幕之外。
你无法再移动精灵的原因是因为你的
(Gdx.input.isTouched() && isNotColliding()) {
当spritePosition.x为< 0 isNotColliding()将为真。
Insead不允许精灵移动,让它留在屏幕内。
if(spritePosition.x < 0){
spritePosition.x = 0;
}