Показать сообщение отдельно
Старый 05.07.2011, 20:29
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 3  
Ответить с цитированием
goodguy
Banned

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
В этом случае, при достижении нуля все будет так же. Это не выход. Там нужен код посложнее.
Я вот так расчитывал вращение башни танка за курсором:
Код AS3:
		// расчет плавного вращения башни в сторону курсора >>>>
		var mouseXpos:Number = this.parent.mouseX;
		var mouseYpos:Number = this.parent.mouseY;
 
		var angleToMouse:Number = Math.atan2(mouseYpos - this.y, mouseXpos - this.x) * Globals.RAD_TO_DEG + 90;
		if (angleToMouse >= 180 && angleToMouse <= 270) {
			angleToMouse -= 360;
		}
		if (angleToMouse < 0 && angleToMouse > -180) {
			angleToMouse += 360;
		}
		var vehRotation:Number = this.rotation;
		if (vehRotation < 0 && vehRotation > -180) {
			vehRotation += 360;
		}
		var turretRot:Number = this.mTurret.rotation;
		if (turretRot < 0 && turretRot > -180) {
			turretRot += 360;
		}
		var turretGlobal:Number = turretRot + vehRotation;
		if (turretGlobal >= 360) {
			turretGlobal -= 360;
		}
		else if (turretGlobal < 0) {
			turretGlobal += 360;
		}
		if (turretGlobal >= 270 && turretGlobal <= 360) {
			if (angleToMouse >= 0 && angleToMouse <= 90) {
				turretGlobal -= 360;
			}
		}
		if (turretGlobal >= 0 && turretGlobal <= 90) {
			if (angleToMouse <= 360 && angleToMouse >= 270) {
				turretGlobal += 360;
			}
		}
		// admission - это минимальный угол, при котором башня перестает двигаться, нужен для того, чтобы она не начинала дергаться при достижении нужной позиции
		var admission:Number = (turretGlobal - angleToMouse) > 0 ? (turretGlobal - angleToMouse) : (turretGlobal - angleToMouse) * -1;
		if (turretGlobal <= angleToMouse) {
			if (admission > 3)
				this.mTurret.rotation += _turretAccel;
		} else if (turretGlobal > angleToMouse) {
			if (admission > 3)
				this.mTurret.rotation -= _turretAccel;
		}
Конечно код малость мудреный, но свое дело он делал.
Там может и не быть 270, просто в моем случае башня была повернута (картинка) как бы на 90 градусов, но в коде это воспринималось как 0.

п.с. Пояснения спрашивать бесполезно, я сам уже не помню что там и зачем


Последний раз редактировалось goodguy; 05.07.2011 в 20:31.