• Chào bạn, hãy đăng ký hoặc đăng nhập để tham gia cùng bọn mình và sử dụng được đầy đủ chức năng của diễn đàn :).
T

Hỏi về code plugin Làm sao để vẽ 1 Effect theo dạng vòng tròn kết hợp với Direction ?

Trạng thái
Không mở trả lời sau này.

TieuMinh

THÀNH VIÊN
Tham gia
23/05/2017
Bài viết
58
Đang buồn ngủ nên tl nhanh, sẽ ko on theo mấy ngày nữa nên đừng hỏi tiếp.
Bác Solar chắc giỏi hơn mình về vụ này.

Nếu đã biết được trục tâm của cái beam đó thì thử vẽ hình tròn theo cái trục đó xem.
 
code vòng tròn đây...direction j đó thì chắc thay vào location là dc
thử
Mã:
Location l = ....; <-- vị trí
for(int degree = 0; degree < 360; degree++) {
                double radians = Math.toRadians(degree);
                double x = Math.cos(radians) * 2; <-- kích thước....
                double z = Math.sin(radians) * 2;<-- kích thước....
                v.setX(x);
                v.setY(1);
                v.setZ(z);
                l.add(v);
//-----------------------------------------------
                l.getWorld().playEffect(l, Effect.FLAME, 1);
//-----------------------------------------------
                l.subtract(x, 1, z);
            }
 
Mã:
    public static final Vector rotateAroundAxisX(Vector v, double angle) {
        double y, z, cos, sin;
        cos = Math.cos(angle);
        sin = Math.sin(angle);
        y = v.getY() * cos - v.getZ() * sin;
        z = v.getY() * sin + v.getZ() * cos;
        return v.setY(y).setZ(z);
    }
 
    public static final Vector rotateAroundAxisY(Vector v, double angle) {
        double x, z, cos, sin;
        cos = Math.cos(angle);
        sin = Math.sin(angle);
        x = v.getX() * cos + v.getZ() * sin;
        z = v.getX() * -sin + v.getZ() * cos;
        return v.setX(x).setZ(z);
    }

Hiểu được thì làm tiếp
 
Mã:
    public static final Vector rotateAroundAxisX(Vector v, double angle) {
        double y, z, cos, sin;
        cos = Math.cos(angle);
        sin = Math.sin(angle);
        y = v.getY() * cos - v.getZ() * sin;
        z = v.getY() * sin + v.getZ() * cos;
        return v.setY(y).setZ(z);
    }
 
    public static final Vector rotateAroundAxisY(Vector v, double angle) {
        double x, z, cos, sin;
        cos = Math.cos(angle);
        sin = Math.sin(angle);
        x = v.getX() * cos + v.getZ() * sin;
        z = v.getX() * -sin + v.getZ() * cos;
        return v.setX(x).setZ(z);
    }

Hiểu được thì làm tiếp
RotateX và rotateY mình dùng : (Direction) vec = rotateAroundAxisX(Y)(vec,location.getYaw()(Pitch))
phải không bạn ?
 
Trạng thái
Không mở trả lời sau này.
Similar content Most view Xem thêm
Back
Top Bottom