Skip to content

Commit aa4f099

Browse files
authored
feat: interactions and restricted movement (#9)
1 parent c79a8e4 commit aa4f099

17 files changed

+721
-207
lines changed

Assets/Input/PlayerActions.inputactions

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,19 @@
5151
"initialStateCheck": true
5252
},
5353
{
54-
"name": "Command",
55-
"type": "Value",
54+
"name": "CommandLT",
55+
"type": "Button",
5656
"id": "29aa4c20-be5b-4e3b-aae0-639d520c9bfd",
57-
"expectedControlType": "Integer",
57+
"expectedControlType": "Button",
58+
"processors": "",
59+
"interactions": "",
60+
"initialStateCheck": true
61+
},
62+
{
63+
"name": "CommandRT",
64+
"type": "Button",
65+
"id": "d93ef1ac-bbac-4cef-97f4-68aff96d7232",
66+
"expectedControlType": "Button",
5867
"processors": "",
5968
"interactions": "",
6069
"initialStateCheck": true
@@ -249,37 +258,26 @@
249258
"isPartOfComposite": false
250259
},
251260
{
252-
"name": "Mouse",
253-
"id": "91c44185-56fa-400e-a486-88b9c85e6cf3",
254-
"path": "1DAxis(whichSideWins=1)",
255-
"interactions": "",
256-
"processors": "",
257-
"groups": "",
258-
"action": "Command",
259-
"isComposite": true,
260-
"isPartOfComposite": false
261-
},
262-
{
263-
"name": "positive",
264-
"id": "e59eba40-351b-4b3a-bcb6-891e28a8c456",
261+
"name": "",
262+
"id": "e9dabb5d-b96f-4c04-aea1-602eb8ef331b",
265263
"path": "<Mouse>/leftButton",
266264
"interactions": "",
267265
"processors": "",
268266
"groups": "Mouse&Keyboard",
269-
"action": "Command",
267+
"action": "CommandLT",
270268
"isComposite": false,
271-
"isPartOfComposite": true
269+
"isPartOfComposite": false
272270
},
273271
{
274-
"name": "negative",
275-
"id": "51451999-a3ac-4a46-9182-5d7785a086b2",
272+
"name": "",
273+
"id": "5fb2f602-8734-4736-b1f5-ed866210459e",
276274
"path": "<Mouse>/rightButton",
277275
"interactions": "",
278276
"processors": "",
279277
"groups": "Mouse&Keyboard",
280-
"action": "Command",
278+
"action": "CommandRT",
281279
"isComposite": false,
282-
"isPartOfComposite": true
280+
"isPartOfComposite": false
283281
}
284282
]
285283
},

Assets/Player/ChainLink.prefab

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Player/Interactable.cs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using UnityEngine;
2+
using UnityEngine.Assertions;
3+
4+
namespace Player {
5+
public class Interactable : MonoBehaviour {
6+
private PlayerController _player;
7+
private MeshRenderer _meshRenderer;
8+
private Material _defaultMaterial;
9+
10+
private void Awake() {
11+
_meshRenderer = GetComponent<MeshRenderer>();
12+
_defaultMaterial = _meshRenderer.material;
13+
}
14+
15+
public virtual Vector3 GetPosition() {
16+
return transform.position;
17+
}
18+
19+
public virtual float GetRadius() {
20+
return 0.3f;
21+
}
22+
23+
public virtual void StopInteraction(PlayerController player) {
24+
Assert.AreEqual(
25+
player,
26+
_player,
27+
"Stop was called by a different player than Start"
28+
);
29+
_player = null;
30+
_meshRenderer.material = _defaultMaterial;
31+
}
32+
33+
public virtual void SetReached(PlayerController player, bool hasReached) {
34+
Assert.AreEqual(
35+
player,
36+
_player,
37+
"InRange was called by a different player than Start"
38+
);
39+
_meshRenderer.material = hasReached ? player.Material : _defaultMaterial;
40+
}
41+
42+
public virtual void StartInteraction(PlayerController player) {
43+
Assert.IsNull(
44+
_player,
45+
"Trying to start interaction while already interacting"
46+
);
47+
_player = player;
48+
}
49+
}
50+
}

Assets/Player/Interactable.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Player/PlayerConfig.asset

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Player/PlayerConfig.asset.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Player/PlayerConfig.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using System;
2+
using UnityEngine;
3+
4+
namespace Player {
5+
public class PlayerConfig : ScriptableObject {
6+
[NonSerialized] public int GroundLayer;
7+
public LayerMask InteractionMask;
8+
public float Acceleration = 30;
9+
public float WalkSpeed = 5;
10+
public float SprintSpeed = 10;
11+
public float MinDistance = 4;
12+
public float MaxDistance = 5;
13+
public float LimitDistance = 6;
14+
public float DoubleTapTime = 0.75f;
15+
16+
private void OnEnable() {
17+
GroundLayer = LayerMask.NameToLayer("Ground");
18+
}
19+
}
20+
}

Assets/Player/PlayerConfig.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)