Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.aezart.gamebase;
- public class MovementSystem {
- public void tick(MotionComponent m, PositionComponent p){
- m.xSpeed += m.xAcceleration;
- m.ySpeed += m.yAcceleration;
- m.direction = Math.atan2(m.ySpeed, m.xSpeed);
- if (m.friction != 0){
- double speed = Math.sqrt(m.xSpeed * m.xSpeed + m.ySpeed * m.ySpeed);
- speed -= m.friction;
- if (speed < 0){
- speed = 0;
- }
- if (speed > m.maxSpeed){
- speed = m.maxSpeed;
- }
- m.xSpeed = Math.cos(m.direction) * speed;
- m.ySpeed = Math.sin(m.direction) * speed;
- m.speedSqr = speed * speed;
- }else{
- m.speedSqr = m.xSpeed * m.xSpeed + m.ySpeed * m.ySpeed;
- if (m.speedSqr > m.maxSpeed * m.maxSpeed){
- double speed = m.maxSpeed;
- m.xSpeed = Math.cos(m.direction) * speed;
- m.ySpeed = Math.sin(m.direction) * speed;
- m.speedSqr = speed * speed;
- }
- }
- p.xPos += m.xSpeed;
- p.yPos += m.ySpeed;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement