Commit 0fe2f3f6 authored by 18류지석's avatar 18류지석

Merge branch 'physics'

# Conflicts:
#	js/main.js
parents 9f7bd07c b50038dd
...@@ -17,11 +17,21 @@ class WordObject ...@@ -17,11 +17,21 @@ class WordObject
let scale = ((p[1].y - p[0].y) / (p[1].x - p[0].x)) * (this.wordWeight - p[0].x) + p[0].y; let scale = ((p[1].y - p[0].y) / (p[1].x - p[0].x)) * (this.wordWeight - p[0].x) + p[0].y;
let fontscale = 25; let fontscale = 25;
var random = WordSpace.getSpawnPoint(lenRate); var random = WordSpace.getSpawnPoint(lenRate);
this.physicsObj = scene.physics.add.sprite(random.x, random.y, 'wordBgr' + this.wordGrade + '_' + Math.min(Math.max(2, this.wordText.length), 6)) this.physicsObj = scene.physics.add.sprite(random.x, random.y, 'wordBgr' + this.wordGrade + '_' + Math.min(Math.max(2, this.wordText.length), 6))
.setMass(this.wordWeight) .setMass(this.wordWeight * 10)
.setScale(scale) .setScale(scale)
.setFrictionX(0)
.setFrictionY(0)
.setBounce(0.5); .setBounce(0.5);
let dist = Phaser.Math.Distance.Between(this.physicsObj.x, this.physicsObj.y, WordSpace.gravityPoint.x, WordSpace.gravityPoint.y);
let angle = Phaser.Math.Angle.Between(this.physicsObj.x, this.physicsObj.y, WordSpace.gravityPoint.x, WordSpace.gravityPoint.y);
//임시땜빵
this.moveStarted = false;
this.initSpeed = {x: Math.max(0, 200-WordSpace.totalWeight) * Math.cos(angle), y: Math.max(0, 200-WordSpace.totalWeight) * Math.sin(angle)};
this.wordObj = scene.add.text(random.x, random.y, this.wordText, this.wordObj = scene.add.text(random.x, random.y, this.wordText,
{ {
fontSize: (scale * fontscale) +'pt', fontSize: (scale * fontscale) +'pt',
...@@ -48,19 +58,35 @@ class WordObject ...@@ -48,19 +58,35 @@ class WordObject
WordSpace.wordPhysicsGroup.remove(this.physicsObj, true, true); WordSpace.wordPhysicsGroup.remove(this.physicsObj, true, true);
} }
attract() attract()
{ {
let gravityScale = 0.1; if(!this.moveStarted)
let accel = {x: 0, y: 0}; {
let dist = Phaser.Math.Distance.Between(this.physicsObj.x, this.physicsObj.y, WordSpace.gravityPoint.x, WordSpace.gravityPoint.y); this.moveStarted = true;
let angle = Phaser.Math.Angle.Between(this.physicsObj.x, this.physicsObj.y, WordSpace.gravityPoint.x, WordSpace.gravityPoint.y); this.physicsObj.setVelocity(this.initSpeed.x, this.initSpeed.y);
accel.x += Math.pow(dist,2) * gravityScale * Math.cos(angle); }
accel.y += Math.pow(dist,2) * gravityScale * Math.sin(angle); let gravityScale = 0.8, velocityLimit;
let accel = {x: this.physicsObj.body.velocity.x, y: this.physicsObj.body.velocity.y};
let dist, angle;
let vel;
this.physicsObj.setVelocity(dist * Math.cos(angle) * this.wordSpeed, dist * Math.sin(angle) * this.wordSpeed); dist = Phaser.Math.Distance.Between(this.physicsObj.x, this.physicsObj.y, WordSpace.gravityPoint.x, WordSpace.gravityPoint.y);
this.wordObj.setPosition(this.physicsObj.x, this.physicsObj.y); angle = Phaser.Math.Angle.Between(this.physicsObj.x, this.physicsObj.y, WordSpace.gravityPoint.x, WordSpace.gravityPoint.y);
this.physicsObj.setVelocity(dist * Math.cos(angle) * this.wordSpeed, dist * Math.sin(angle) * this.wordSpeed); velocityLimit = dist * 0.9;
accel.x += gravityScale * Math.cos(angle);
accel.y += gravityScale * Math.sin(angle);
vel = Phaser.Math.Distance.Between(accel.x,accel.y,0,0);
if(vel > velocityLimit)
{
accel.x *= velocityLimit / vel;
accel.y *= velocityLimit / vel;
}
this.physicsObj.setVelocity(accel.x, accel.y);
this.wordObj.setPosition(this.physicsObj.x, this.physicsObj.y); this.wordObj.setPosition(this.physicsObj.x, this.physicsObj.y);
} }
isEqualObject(_generationCode) { return _generationCode === this.generationCode; } isEqualObject(_generationCode) { return _generationCode === this.generationCode; }
......
...@@ -79,8 +79,8 @@ WordSpace.getSpawnPoint = function(_lenRate) ...@@ -79,8 +79,8 @@ WordSpace.getSpawnPoint = function(_lenRate)
{ {
let lenRate = 1; let lenRate = 1;
if(typeof _lenRate == 'number') lenRate = _lenRate; if(typeof _lenRate == 'number') lenRate = _lenRate;
let xLen = 600 * lenRate; let xLen = 550 * lenRate;
let yLen = 300 * lenRate; let yLen = 350 * lenRate;
const angle = Math.random() * Math.PI * 2; const angle = Math.random() * Math.PI * 2;
let _x = xLen * Math.cos(angle) + this.gravityPoint.x; let _x = xLen * Math.cos(angle) + this.gravityPoint.x;
let _y = yLen * Math.sin(angle) + this.gravityPoint.y; let _y = yLen * Math.sin(angle) + this.gravityPoint.y;
...@@ -230,6 +230,10 @@ WordSpace.loadImage = function(scene) ...@@ -230,6 +230,10 @@ WordSpace.loadImage = function(scene)
scene.load.image(('wordBgr' + i + '_' + j), ('assets/placeholder/'+i + '_' + j + '.png')); scene.load.image(('wordBgr' + i + '_' + j), ('assets/placeholder/'+i + '_' + j + '.png'));
} }
} }
for (let i = 0; i < 4; i++)
{
scene.load.image('attackAlert' + i, 'assets/placeholder/attackalert' + (i+1) + '.png');
}
} }
WordSpace.gameSceneForTest = scene; // for test WordSpace.gameSceneForTest = scene; // for test
WordSpace.weightTextObjForTest = scene.add.text(100, 75, '뇌의 무게: (현재) 0 / 100 (전체)').setDepth(10).setColor('#000000'); WordSpace.weightTextObjForTest = scene.add.text(100, 75, '뇌의 무게: (현재) 0 / 100 (전체)').setDepth(10).setColor('#000000');
......
...@@ -119,4 +119,5 @@ window.addEventListener("message", function (event) { ...@@ -119,4 +119,5 @@ window.addEventListener("message", function (event) {
alert("Your browser does not support postMessage. Sorry but you will be forced to default to the standard setInterval and setTimeout functions. This means you may experience pauses in your game when you navigate away from the tab it is playing in."); alert("Your browser does not support postMessage. Sorry but you will be forced to default to the standard setInterval and setTimeout functions. This means you may experience pauses in your game when you navigate away from the tab it is playing in.");
} }
}); });
})(this);*/ })(this);
*/
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment