碰撞检测(LibGDX)

时间:2016-06-20 10:23:00

标签: android libgdx collision-detection

我的程序检测到图像与屏幕边缘之间的碰撞,但我无法在碰撞后拖动图像。我有什么改变,所以我仍然可以拖动图像并且不让图像超出屏幕边缘?

我做的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());
    });
});

1 个答案:

答案 0 :(得分:1)

精灵的位置是左下角。这个位置用于检查精灵是否与边缘碰撞。

因为你可以在一个帧中移动精灵超过1个像素,所以你可以将精灵x位置设为负数。如果spritePosition.x == -1,您将能够看到精灵,但第一行像素将位于屏幕之外。

你无法再移动精灵的原因是因为你的

(Gdx.input.isTouched() && isNotColliding()) {

当spritePosition.x为< 0 isNotColliding()将为真。

Insead不允许精灵移动,让它留在屏幕内。

if(spritePosition.x < 0){
    spritePosition.x = 0;
}