-
Notifications
You must be signed in to change notification settings - Fork 0
/
PlayerController.cs
53 lines (46 loc) · 1.64 KB
/
PlayerController.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float speed = 4.0f;
Rigidbody2D rigidbody2D;
Vector2 lookDirection = new Vector2(0, 1); // this could be pointing up or down, not sure
Animator animator;
void Start()
{
rigidbody2D = GetComponent<Rigidbody2D>();
animator = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
Vector2 position = rigidbody2D.position;
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
Vector2 move = new Vector2(horizontal, vertical);
position = position + move * speed * Time.deltaTime;
rigidbody2D.MovePosition(position);
if (!Mathf.Approximately(move.x, 0.0f) || !Mathf.Approximately(move.y, 0.0f))
{
lookDirection.Set(move.x, move.y);
lookDirection.Normalize();
}
animator.SetFloat("Look X", lookDirection.x);
animator.SetFloat("Look Y", lookDirection.y);
animator.SetFloat("Speed", move.magnitude);
if (Input.GetKeyDown(KeyCode.Z))
{
RaycastHit2D hit = Physics2D.Raycast(rigidbody2D.position + Vector2.up * 1.0f,
lookDirection, 1.0f, LayerMask.GetMask("Interactables"));
if (hit.collider != null)
{
Interactable interactable = hit.collider.GetComponent<Interactable>();
if (interactable != null)
{
interactable.Interact();
}
}
}
}
}