Discussion about Character Controller

Hello guys, I dont know where to put this topic so I put it here as a general discussion. Well as the topic state. I would like to discuss about character controller. What type of action usually have inside a character controller? Here I list down a few that I have in my head:

Character Movement: (MOSTLY FOR ADVANTURE GAME)

BASIC:
1.idle
2.walk
3.jump

ADVANCE:
1.run
2.double jump
3.wall jump
5.ledge grap
6.slide -down slope, ground, rope or ladder
7.roll/dodge
8.climb -rope, ladder, ledge
9.swim
10.fall
11.pickup object
12.hold object
13.grab object
14.push object
15.throw object
16.pulling swith or lever
17.pushing button
18.stay on moving platform
19.dash
20.cover

CHARACTER STATE:
1.different idle state
2.idle swim
3.different ledge grap state

TYPE OF SWITCH/BUTTON OF LEVER:
1.rotating type
2.push and hold type
3.heavy load on top
4.step on
5.push button
7.weight type

PICKUP OBJECT TYPE:
1.health
2.power ups
3.ammo
4.coins/orbs
5.quest item
6.weapon
7.flower pot. rock, enemy, npc/Zelda style(if you know what I meant)

The reason I posted this topic if to study and try develop this type of character mechanic. So far what I have right now is:

1.walk
2.jump
3.hold and push
4.switch - as in open closed door, trigger, scene transition

so I have a long way to go to complete the list upstairs. What is basic and what is advance character mechanic, because I see game nowadays have so many character mechanic in their games.

I noticed a few things missing mainly the handling of gravity. I have a friend making a physics/gravity game using character controller and having a little hard time with switching gravity and such. Just thinking charactercontroller need some good gravity built in.

But yeah, i like your initiative to start this thread to discuss this. I also do look forward to a better charactercontroller. :smile:

Gravity is easy, just think exactly like real newtonian physics and use Physics.gravity (or 9.81 but using Physics.gravity is useful if you want to change the gravity). Then just do moveposition.y += Physics.gravity * Time.deltaTime . Use += because Physics.gravity is a negative number. If you do that and test it with a cube that uses a rigidbody next to your character you will see they fall at exactly the same speed, so that’s probably how the physics system in Unity works as well.

Most of the stuff in the OP sounds like it would just require some time to script, but definitely doesn’t sound un-doable or even that hard really.

I’ve noticed that the supplied character controller is really clunky. It just does what it’s told, with no smooth movements…

@Unfathomable Chaos, Yes most of the stuff is doable, also need time and really good programming structure to make it work perfectly.