[]物体随着鼠标滑动旋转脚本
function ObjectRotate() {
ObjectRotate.super(this);//这里不太清楚作用
//最终鼠标在X轴上的值
this.lastMouseX = NaN;
//最终鼠标在Y轴上的值
this.lastMouseY = NaN;
this.yawPitchRoll = new Laya.Vector3(); //
//实例化一个四元素
this.tempRotationZ = new Laya.Quaternion();
//鼠标是否按下默认为没有按下
this.isMouseDown = false;
//旋转速度
this.rotaionSpeed = 0.00006;
this.mainCameraAnimation = null;
this.scene = null;
}
Laya.class(ObjectRotate, "ObjectRotate", Laya.Script); //这是什么意思有什么作用
ObjectRotate.prototype._initialize = function (owner) {
var _this = this;
ObjectRotate.__super.prototype._initialize.call(this,owner);
//在this(调取本函数的的对象)作用域内,侦听mousedown(鼠标按下)事件,如果侦听到就执行方法this.mousedown
Laya.stage.on("mousedown", this, this.mouseDown);
Laya.stage.on("mouseup", this, this.mouseUp);
Laya.stage.on("mouseout", this, this.mouseOut);
_this.Obj = owner;
}
//
ObjectRotate.prototype._update = function (state) {
ObjectRotate.__super.prototype._update.call(this,state);
this.updateObject(state.elapsedTime);
}
//Object实时旋转
ObjectRotate.prototype.updateObject = function (elapsedTime) {
if (!isNaN(this.lastMouseX) && !isNaN(this.lastMouseY)) {
if (this.isMouseDown) {
var offsetX = Laya.stage.mouseX - this.lastMouseX;
var offsetY = Laya.stage.mouseY - this.lastMouseY;
var yprElem = this.yawPitchRoll.elements;
yprElem[0] += offsetX * this.rotaionSpeed * elapsedTime; //控制对象在X轴上的旋转
yprElem[1] -= offsetY * this.rotaionSpeed * elapsedTime; //控制对象在Y轴上的旋转
this.updateRotation();
}
}
this.lastMouseX = Laya.stage.mouseX;
this.lastMouseY = Laya.stage.mouseY;
}
//更新Object旋转
ObjectRotate.prototype.updateRotation = function () {
var yprElem = this.yawPitchRoll.elements;
if (Math.abs(yprElem[1]) < 1.50) {
Laya.Quaternion.createFromYawPitchRoll(yprElem[0], yprElem[1], yprElem[2], this.tempRotationZ);
this.Obj.transform.localRotation = this.tempRotationZ;
}
}
//鼠标按下Object随着鼠标滑动得出相应的坐标值
ObjectRotate.prototype.mouseDown = function (e) {
this.Obj.transform.localRotation.getYawPitchRoll(this.yawPitchRoll);
this.lastMouseX = Laya.stage.mouseX; //获取鼠标的X值
this.lastMouseY = Laya.stage.mouseY; //获取鼠标的Y值
this.isMouseDown = true;
}
ObjectRotate.prototype.mouseUp = function (e) {
this.isMouseDown = false;
}
ObjectRotate.prototype.mouseOut = function (e) {
this.isMouseDown = false;
}
==========================================================================================================================
上面加粗的代码 没理解透有谁 知道的就说说吧
ObjectRotate.super(this);//这里不太清楚作用
//最终鼠标在X轴上的值
this.lastMouseX = NaN;
//最终鼠标在Y轴上的值
this.lastMouseY = NaN;
this.yawPitchRoll = new Laya.Vector3(); //
//实例化一个四元素
this.tempRotationZ = new Laya.Quaternion();
//鼠标是否按下默认为没有按下
this.isMouseDown = false;
//旋转速度
this.rotaionSpeed = 0.00006;
this.mainCameraAnimation = null;
this.scene = null;
}
Laya.class(ObjectRotate, "ObjectRotate", Laya.Script); //这是什么意思有什么作用
ObjectRotate.prototype._initialize = function (owner) {
var _this = this;
ObjectRotate.__super.prototype._initialize.call(this,owner);
//在this(调取本函数的的对象)作用域内,侦听mousedown(鼠标按下)事件,如果侦听到就执行方法this.mousedown
Laya.stage.on("mousedown", this, this.mouseDown);
Laya.stage.on("mouseup", this, this.mouseUp);
Laya.stage.on("mouseout", this, this.mouseOut);
_this.Obj = owner;
}
//
ObjectRotate.prototype._update = function (state) {
ObjectRotate.__super.prototype._update.call(this,state);
this.updateObject(state.elapsedTime);
}
//Object实时旋转
ObjectRotate.prototype.updateObject = function (elapsedTime) {
if (!isNaN(this.lastMouseX) && !isNaN(this.lastMouseY)) {
if (this.isMouseDown) {
var offsetX = Laya.stage.mouseX - this.lastMouseX;
var offsetY = Laya.stage.mouseY - this.lastMouseY;
var yprElem = this.yawPitchRoll.elements;
yprElem[0] += offsetX * this.rotaionSpeed * elapsedTime; //控制对象在X轴上的旋转
yprElem[1] -= offsetY * this.rotaionSpeed * elapsedTime; //控制对象在Y轴上的旋转
this.updateRotation();
}
}
this.lastMouseX = Laya.stage.mouseX;
this.lastMouseY = Laya.stage.mouseY;
}
//更新Object旋转
ObjectRotate.prototype.updateRotation = function () {
var yprElem = this.yawPitchRoll.elements;
if (Math.abs(yprElem[1]) < 1.50) {
Laya.Quaternion.createFromYawPitchRoll(yprElem[0], yprElem[1], yprElem[2], this.tempRotationZ);
this.Obj.transform.localRotation = this.tempRotationZ;
}
}
//鼠标按下Object随着鼠标滑动得出相应的坐标值
ObjectRotate.prototype.mouseDown = function (e) {
this.Obj.transform.localRotation.getYawPitchRoll(this.yawPitchRoll);
this.lastMouseX = Laya.stage.mouseX; //获取鼠标的X值
this.lastMouseY = Laya.stage.mouseY; //获取鼠标的Y值
this.isMouseDown = true;
}
ObjectRotate.prototype.mouseUp = function (e) {
this.isMouseDown = false;
}
ObjectRotate.prototype.mouseOut = function (e) {
this.isMouseDown = false;
}
==========================================================================================================================
上面加粗的代码 没理解透有谁 知道的就说说吧
要回复问题请先登录
2 个回复
HummerMan
赞同来自:
mayzhengxi
赞同来自: