Compare commits

...
Author SHA1 Message Date
Gregory Campbell 996e1e3b20 Fully functional and satisfactory acc/decc in movement (although a little slippery, might require more tweakign later on) 2020-01-04 16:15:15 -05:00
Gregory Campbell 386b51589e Got a fully functional implementation of acceleration/decceleration that meshes well across all inputs. Will do further testing/tinkering before merging 2020-01-04 15:52:45 -05:00
Gregory Campbell 573b4815ea Havent made any real progress, stopping and saving this now to work on other things 2020-01-04 15:02:05 -05:00
Gregory CampbellandGitHub db8ae256a8 Merge pull request #17 from gjcampbell777/wall_running
Wall running
2019-12-31 18:18:34 -05:00
Gregory Campbell 9818b32bdc Got a functional implementation of wall running that I am satisfied with 2019-12-31 18:17:35 -05:00
Gregory Campbell f1db804155 Implemented basic wallrunning 2019-12-21 23:17:24 -05:00
Gregory CampbellandGitHub a31a335424 Merge pull request #16 from gjcampbell777/add_momentum_to_movement
Add momentum to movement
2019-12-21 21:03:56 -05:00
Gregory Campbell e638892592 Got momentum based movement fully functional while fixing a few player controller bugs and preferential tweaks 2019-12-21 21:00:36 -05:00
Gregory Campbell 3afdbc4ff0 Fixed issue causing no increased or decreased mmovement based on changing moveset 2019-12-14 23:49:23 -05:00
Gregory Campbell a292dd8b9a Added momentum to player movement and made adjustments to public player variables 2019-12-14 23:40:14 -05:00
Gregory Campbell 31fc08bd5b Slight tweak to improve upon the last merge 2019-12-11 21:33:57 -05:00
Gregory CampbellandGitHub b83c37531a Merge pull request #15 from gjcampbell777/fix_delayed_standing_slide_bug
Fixed delayed standing slide and made standard horz/vert axis movemen…
2019-12-11 21:14:01 -05:00
4 changed files with 136 additions and 33 deletions
+14 -11
View File
@@ -167,7 +167,7 @@ GameObject:
- component: {fileID: 194035205}
m_Layer: 0
m_Name: Running Wall Left
m_TagString: Environment
m_TagString: Wall
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@@ -180,8 +180,8 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 194035203}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 62, y: 6.5, z: 12}
m_LocalScale: {x: 25, y: 20, z: 0.25}
m_LocalPosition: {x: 80, y: 6.5, z: 12}
m_LocalScale: {x: 75, y: 20, z: 0.25}
m_Children: []
m_Father: {fileID: 1013482115}
m_RootOrder: 0
@@ -366,7 +366,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 203887784}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 84, y: -0.5, z: 6}
m_LocalPosition: {x: 120, y: -0.5, z: 6}
m_LocalScale: {x: 20, y: 0.5, z: 12}
m_Children: []
m_Father: {fileID: 833538478}
@@ -1205,7 +1205,7 @@ CapsuleCollider:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 741217452}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_IsTrigger: 1
m_Enabled: 1
m_Radius: 0.5
m_Height: 2
@@ -1284,7 +1284,10 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 83127dd120c01de45954b99cc4d669a5, type: 3}
m_Name:
m_EditorClassIdentifier:
speed: 20
speed: 10
maxSpeed: 25
acceleration: 3
friction: 0.1
jumpHeight: 20
gravity: 5
rotationSpeed: 20
@@ -1388,7 +1391,7 @@ GameObject:
- component: {fileID: 858957127}
m_Layer: 0
m_Name: Running Wall Right
m_TagString: Environment
m_TagString: Wall
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
@@ -1401,8 +1404,8 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 858957125}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 62, y: 6.5, z: 0}
m_LocalScale: {x: 25, y: 20, z: 0.25}
m_LocalPosition: {x: 80, y: 6.5, z: 0}
m_LocalScale: {x: 75, y: 20, z: 0.25}
m_Children: []
m_Father: {fileID: 1013482115}
m_RootOrder: 1
@@ -2042,8 +2045,8 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1853948297}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 62, y: -3.5, z: 6}
m_LocalScale: {x: 25, y: 0.25, z: 12}
m_LocalPosition: {x: 80, y: -3.5, z: 6}
m_LocalScale: {x: 75, y: 0.25, z: 12}
m_Children: []
m_Father: {fileID: 833538478}
m_RootOrder: 1
+119 -20
View File
@@ -12,18 +12,28 @@ public class PlayerController : MonoBehaviour
CharacterController characterController;
CapsuleCollider capsule;
public float speed;
public float maxSpeed;
public float acceleration;
public float friction;
public float jumpHeight;
public float gravity;
public float rotationSpeed;
public Transform pivot;
public GameObject playerModel;
private bool wallRunning = false;
private int jump = 0;
private int wall = 0;
private float maxSpeedStore;
private float maxSpeedCap = 100;
private float accelerationStore;
private float capsuleHeight;
private float controllerHeight;
private float transformHeight;
private float xVelocity = 0.0f;
private float zVelocity = 0.0f;
private Vector3 moveDirection;
private Vector3 velocity;
float startTime = 0.0f;
float oneSec = 1.0f;
@@ -35,20 +45,35 @@ public class PlayerController : MonoBehaviour
transformHeight = transform.localScale.y;
controllerHeight = characterController.height;
capsuleHeight = capsule.height;
maxSpeedStore = maxSpeed;
accelerationStore = acceleration;
}
void OnControllerColliderHit(ControllerColliderHit hit)
{
if(hit.gameObject.tag == "Wall")
{
wallRunning = true;
wall++;
}
}
void Update()
{
float yStore = moveDirection.y;
//Need to switch to 'raw' when using keyboard
moveDirection = (transform.forward * Input.GetAxisRaw("Vertical")) + (transform.right * Input.GetAxisRaw("Horizontal"));
moveDirection = new Vector3(Input.GetAxis("Horizontal"), moveDirection.y, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection = Vector3.ClampMagnitude(moveDirection, 1.0f);
if (jump <= 1)
if (jump >= 2)
{
moveDirection = moveDirection.normalized * speed; //Remove this line to make running diagonal the fastest standard run
} else {
moveDirection = (moveDirection.normalized * speed)/4; //Remove this line to make running diagonal the fastest standard run
if(maxSpeed > maxSpeedStore/1.75f)
{
maxSpeed -= acceleration;
}
}
moveDirection.y = yStore;
@@ -58,11 +83,22 @@ public class PlayerController : MonoBehaviour
jump = 0;
moveDirection.y = 0.0f;
if(maxSpeed > maxSpeedStore)
{
maxSpeed -= acceleration/10;
}
if(maxSpeed < maxSpeedStore && !Input.GetKey(KeyCode.LeftShift) && !Input.GetKey(KeyCode.LeftControl))
{
maxSpeed += acceleration;
}
if(Input.GetKey(KeyCode.LeftShift))
{
moveDirection = (moveDirection.normalized * speed/2);
} else {
moveDirection = moveDirection.normalized * speed;
if(maxSpeed > maxSpeedStore/2)
{
maxSpeed -= acceleration;
}
}
if(Input.GetKey(KeyCode.LeftControl))
@@ -72,30 +108,38 @@ public class PlayerController : MonoBehaviour
capsule.height /= 2;
transform.localScale = new Vector3(transform.localScale.x, transformHeight/2, transform.localScale.z);
if(Input.GetKeyDown(KeyCode.LeftControl) && characterController.velocity != new Vector3(0, 0, 0))
if(Input.GetKeyDown(KeyCode.LeftControl) && characterController.velocity != new Vector3(0, 0, 0)
&& (Input.GetAxis("Horizontal") != 0 || Input.GetAxis("Vertical") != 0))
{
startTime = Time.time;
}
}
if(startTime + oneSec >= Time.time)
{
moveDirection = (moveDirection.normalized * speed * 2);
if(maxSpeed < maxSpeedStore*2)
{
maxSpeed += acceleration*2;
}
} else {
moveDirection = (moveDirection.normalized * speed/4);
if(maxSpeed > maxSpeedStore/4)
{
maxSpeed -= acceleration;
}
}
} else {
moveDirection = moveDirection.normalized * speed;
characterController.height = controllerHeight;
capsule.height = capsuleHeight;
transform.localScale = new Vector3(transform.localScale.x, transformHeight, transform.localScale.z);
}
}
}
if (Input.GetButtonDown("Jump") && jump <= 1)
{
@@ -103,13 +147,68 @@ public class PlayerController : MonoBehaviour
jump++;
}
if (characterController.collisionFlags == CollisionFlags.None)
{
wallRunning = false;
wall = 0;
}
moveDirection.y += Physics.gravity.y * gravity * Time.deltaTime;
if (wallRunning)
{
if(maxSpeed < maxSpeedStore*1.5f)
{
maxSpeed += acceleration;
}
jump = 0;
if(wall == 1)
{
startTime = Time.time;
}
if(startTime + oneSec < Time.time)
{
moveDirection.y += Physics.gravity.y * (gravity/8) * Time.deltaTime;
} else {
moveDirection.y = 0.0f;
}
}
velocity.x += moveDirection.x;
velocity.z += moveDirection.z;
if(Input.GetAxis("Horizontal") == 0 && Input.GetAxis("Vertical") == 0){
//Remove or "lower" friction to add an 'ice' effect
velocity.x = Mathf.SmoothDamp(velocity.x, 0.0f, ref xVelocity, friction);
velocity.z = Mathf.SmoothDamp(velocity.z, 0.0f, ref zVelocity, friction);
}
if(maxSpeed > maxSpeedCap)
{
maxSpeed = maxSpeedCap;
}
if(characterController.velocity == new Vector3(0, 0, 0))
{
maxSpeed = maxSpeedStore;
}
velocity = Vector3.ClampMagnitude(velocity, maxSpeed);
velocity.y = moveDirection.y;
// Move the controller
characterController.Move(moveDirection * Time.deltaTime);
characterController.Move(velocity * Time.deltaTime);
//Move the player in different directions based on camera look direction
//Need to switch to 'raw' when using keyboard
if(Input.GetAxis("Horizontal") != 0 || Input.GetAxis("Vertical") != 0)
{
transform.rotation = Quaternion.Euler(0f, pivot.rotation.eulerAngles.y, 0f);
+2 -2
View File
@@ -16,7 +16,7 @@ InputManager:
gravity: 1000
dead: 0.001
sensitivity: 3
snap: 1
snap: 0
invert: 0
type: 0
axis: 0
@@ -32,7 +32,7 @@ InputManager:
gravity: 1000
dead: 0.001
sensitivity: 3
snap: 1
snap: 0
invert: 0
type: 0
axis: 0
+1
View File
@@ -5,6 +5,7 @@ TagManager:
serializedVersion: 2
tags:
- Environment
- Wall
layers:
- Default
- TransparentFX