This repository has been archived on 2025-04-11. You can view files and clone it, but cannot push or open issues or pull requests.
revival-survival/Assets/Scripts/Player.cs
2018-07-02 20:49:00 -05:00

80 lines
2 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent (typeof (Controller))]
public class Player : MonoBehaviour {
public Animator anim;
// Values used to calculate jump velocity and gravity
public float jumpHeight = 4;
public float timeToJumpApex = .4f;
// Horizontal move speed
public float moveSpeed = 6;
// Used for jump time
[HideInInspector]
public float accelerationTimeAirborne = .1f;
[HideInInspector]
public float accelerationTimeGrounded = .05f;
// Gravity and jumpVelocity are derived from provided values
float gravity;
float jumpVelocity;
// Player velocity at any given moment
Vector3 velocity;
// Used to give a sense of momentum to the player
float velocityXSmoothing;
Controller controller;
// Use this for initialization
void Start () {
controller = GetComponent<Controller>();
controller.playerInit (gameObject.layer);
gravity = -(2 * jumpHeight) / (Mathf.Pow(timeToJumpApex,2));
jumpVelocity = Mathf.Abs(gravity * timeToJumpApex);
print ("Gravity: " + gravity + " Jump Velocity: " + jumpVelocity);
anim = GetComponent<Animator> ();
}
// Update is called once per frame
void Update () {
if (controller.collisions.above || controller.collisions.below) {
velocity.y = 0;
}
Vector2 input = new Vector2 (Input.GetAxisRaw ("Horizontal"), Input.GetAxisRaw ("Vertical"));
if (Input.GetButtonDown ("Jump") && controller.collisions.below) {
velocity.y = jumpVelocity;
}
if(Input.GetButtonDown("Fire1"))
{
controller.Attack (0);
}
if(Input.GetButtonDown("Fire2"))
{
controller.Attack (1);
}
float targetVelocityX = input.x * moveSpeed;
velocity.x = Mathf.SmoothDamp (velocity.x, targetVelocityX, ref velocityXSmoothing, (controller.collisions.below)?accelerationTimeGrounded:accelerationTimeAirborne);
velocity.y += gravity * Time.deltaTime;
anim.SetFloat ("Moving", Mathf.Abs(velocity.x));
anim.SetBool ("Jumping", !controller.collisions.below);
controller.Move (velocity * Time.deltaTime, input);
}
}