• Trong thời gian này, bạn không thể tạo bài mới, đăng comment, hay tạo tài nguyên mới để diễn đàn dọn dẹp nội dung.
    Diễn đàn sẽ sớm mở trở lại, chi tiết hãy theo dõi tại Discord
T

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

  • Người tạo chủ đề Người tạo chủ đề TieuMinh
  • Ngày gửi Ngày gửi
Trạng thái
Không mở trả lời sau này.
Đ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.
Nội dung tương tự Xem nhiều nhất Xem thêm

Thống kê nội dung

Tạo
TieuMinh,
Trả lời lần cuối từ
TieuMinh,
Trả lời
4
Lượt xem
460
Quay lại
Trên cùng