private void Motion(ComponentPosition positions, Vector3 velocity, Geometry geom, Vector3 objPos, string collisionType, WallCollisions wallCol) { Vector3 newpos = positions.Position; Vector3 newvel = velocity * 15; newpos += newvel * GameScene.dt; checkCollsion(newpos, geom, objPos, collisionType, ref velocity, wallCol); if (hit != true && wallCol.getlength() == i) { positions.Position += (velocity * GameScene.dt); } else if (wallCol.getlength() == i) { velocity *= -1; positions.Position += (velocity * GameScene.dt); hit = false; } }
private void Motion2(ComponentPosition positions, Vector3 velocity, Geometry geom, Vector3 objPos, string collisionType, WallCollisions wallCol) { Vector3 player = ((ComponentPosition)playerpos).Position; Vector3 newpos = positions.Position; /*Vector3 pos = Vector3.Normalize(newpos); * * float dot = Vector3.Dot(pos, player); * * if (dot >= player.X) * { * velocity.X = dot; * newpos += velocity * GameScene.dt; * checkCollsion(newpos, geom, objPos, collisionType, ref velocity, wallCol); * } * if (dot >= player.Z) * { * velocity.Z = -10; * newpos += velocity * GameScene.dt; * checkCollsion(newpos, geom, objPos, collisionType, ref velocity, wallCol); * * }*/ Vector3 playerposv = ((ComponentPosition)playerpos).Position; Vector3 newvel; if (playerposv.X > newpos.X) { velocity.X = 8; } if (playerposv.X < newpos.X) { velocity.X = -8; } if (playerposv.Z < newpos.Z) { velocity.Z = -8; } if (playerposv.Z > newpos.Z) { velocity.Z = 8; } newvel = velocity * 15; newpos += newvel * GameScene.dt; checkCollsion(newpos, geom, objPos, collisionType, ref velocity, wallCol); PlayerHit((ComponentPosition)Ghostpos, (ComponentPosition)playerpos, wallCol); if (hit != true && wallCol.getlength() == i) { positions.Position += (velocity * GameScene.dt); } else if (wallCol.getlength() == i) { velocity *= -10; positions.Position += (velocity * GameScene.dt); } }