yukiyuki_mahuyu
05/14/2024, 3:01 PMhi03
05/15/2024, 12:17 PMhi03
05/15/2024, 12:23 PMjs
//方向検知-先頭車型
function getCollideTrain(entity){
var world = entity.field_70170_p;
var aabb = entity.field_70121_D.func_72314_b(0, 2, 0);
var train = null;
world.func_72839_b(entity, aabb).forEach(
function(collideEntity){
if(collideEntity instanceof EntityTrainBase) train = collideEntity.getFormation().get(0).train;
if(collideEntity instanceof EntityBogie) train = collideEntity.getTrain().getFormation().get(0).train;
}
);
if(!train) return null;
var motionX = train.field_70169_q - train.field_70165_t;
var motionY = train.field_70167_r - train.field_70163_u;
var motionZ = train.field_70166_s - train.field_70161_v;
var motionVec = new Vec3(motionX, motionY, motionZ);
if (motionVec.length() === 0) {
var fotmation = entity.getFormation();
var isDirInvert = fotmation ? Boolean(fotmation.getEntry(entity).dir) : false;
var speed = isDirInvert ? -entity.getSpeed() : entity.getSpeed();
var trainYaw = entity.field_70177_z + 180;
motionVec = new Vec3(0, 0, speed);
motionVec = motionVec.rotateAroundY(trainYaw);
}
var trainYaw = Math.floor(motionVec.getYaw() + 360) % 360;
var signalYaw = Math.floor(entity.field_70177_z + 360) % 360;
var negativeSignalYaw = signalYaw >= 5 ? signalYaw - 5 : signalYaw - 5 + 360;
var positiveSignalYaw = signalYaw <= 355 ? signalYaw + 5 : signalYaw + 5 - 360;
if (signalYaw > 5 && signalYaw < 355) {
if (negativeSignalYaw <= trainYaw && trainYaw <= positiveSignalYaw) {
return train.getFormation().get(0).train;;
}
}
else {
if (negativeSignalYaw <= trainYaw || trainYaw <= positiveSignalYaw) {
return train.getFormation().get(0).train;;
}
}
return null;
}
で直るかなと思います(未検証yukiyuki_mahuyu
05/15/2024, 4:18 PM